set.prototype.intersection
Advanced tools
Comparing version 1.1.3 to 1.1.4
@@ -6,7 +6,7 @@ 'use strict'; | ||
var Get = require('es-abstract/2023/Get'); | ||
var IsCallable = require('es-abstract/2023/IsCallable'); | ||
var ToIntegerOrInfinity = require('es-abstract/2023/ToIntegerOrInfinity'); | ||
var ToNumber = require('es-abstract/2023/ToNumber'); | ||
var Type = require('es-abstract/2023/Type'); | ||
var Get = require('es-abstract/2024/Get'); | ||
var IsCallable = require('es-abstract/2024/IsCallable'); | ||
var ToIntegerOrInfinity = require('es-abstract/2024/ToIntegerOrInfinity'); | ||
var ToNumber = require('es-abstract/2024/ToNumber'); | ||
var Type = require('es-abstract/2024/Type'); | ||
@@ -13,0 +13,0 @@ var isNaN = require('es-abstract/helpers/isNaN'); |
@@ -5,4 +5,4 @@ 'use strict'; | ||
var IsArray = require('es-abstract/2023/IsArray'); | ||
var SameValueZero = require('es-abstract/2023/SameValueZero'); | ||
var IsArray = require('es-abstract/2024/IsArray'); | ||
var SameValueZero = require('es-abstract/2024/SameValueZero'); | ||
@@ -9,0 +9,0 @@ var some = require('es-abstract/helpers/some'); |
@@ -8,2 +8,12 @@ # Changelog | ||
## [v1.1.4](https://github.com/es-shims/Set.prototype.intersection/compare/v1.1.3...v1.1.4) - 2024-03-19 | ||
### Commits | ||
- [Refactor] add `SetDataSize` [`714b7a1`](https://github.com/es-shims/Set.prototype.intersection/commit/714b7a1b25b3f403ec1415ba4b3eb1ee5ae6ea64) | ||
- [meta] remove useless ESM [`766bf7a`](https://github.com/es-shims/Set.prototype.intersection/commit/766bf7a7f0a3406f95b2338dcc69d4e584889bad) | ||
- [Deps] update `call-bind`, `es-abstract`, `es-errors`, `is-set` [`72b2a56`](https://github.com/es-shims/Set.prototype.intersection/commit/72b2a567d899e20239889de0a4876e6acbb6e575) | ||
- [actions] remove redundant finisher [`ba66d24`](https://github.com/es-shims/Set.prototype.intersection/commit/ba66d249c62aa8797ec28e3e69d85a067f787bce) | ||
- [Dev Deps] update `tape` [`4bc40ee`](https://github.com/es-shims/Set.prototype.intersection/commit/4bc40eebcf57ae9342f0095d7e86b397a52ce7d0) | ||
## [v1.1.3](https://github.com/es-shims/Set.prototype.intersection/compare/v1.1.2...v1.1.3) - 2024-02-04 | ||
@@ -10,0 +20,0 @@ |
'use strict'; | ||
// Note: the commented out code is because there is no performant way in userland to do the optimization in step 7. | ||
// Note: the commented out code is because there is no performant way in userland to do the optimization in step 6. | ||
@@ -9,9 +9,10 @@ var $TypeError = require('es-errors/type'); | ||
var Call = require('es-abstract/2023/Call'); | ||
var GetIteratorFromMethod = require('es-abstract/2023/GetIteratorFromMethod'); | ||
var Call = require('es-abstract/2024/Call'); | ||
var GetIteratorFromMethod = require('es-abstract/2024/GetIteratorFromMethod'); | ||
var GetSetRecord = require('./aos/GetSetRecord'); | ||
var IteratorStep = require('es-abstract/2023/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2023/IteratorValue'); | ||
var IteratorStep = require('es-abstract/2024/IteratorStep'); | ||
var IteratorValue = require('es-abstract/2024/IteratorValue'); | ||
var SetDataHas = require('./aos/SetDataHas'); | ||
var ToBoolean = require('es-abstract/2023/ToBoolean'); | ||
var SetDataSize = require('./aos/SetDataSize'); | ||
var ToBoolean = require('es-abstract/2024/ToBoolean'); | ||
@@ -27,3 +28,2 @@ var forEach = require('es-abstract/helpers/forEach'); | ||
var $setAdd = tools.add; | ||
var $setSize = tools.size; | ||
@@ -45,14 +45,13 @@ var $push = callBound('Array.prototype.push'); | ||
var thisSize = $setSize(O); // step 5 | ||
if (thisSize <= otherRec['[[Size]]']) { // step 6 | ||
var index = 0; // step 6.a | ||
var thisSize = SetDataSize(O); // step 5.a | ||
if (thisSize <= otherRec['[[Size]]']) { // step 5 | ||
var index = 0; // step 5.b | ||
$setForEach(O, function (e) { | ||
if (index < thisSize) { // step 6.b | ||
index += 1; // step 6.b.ii | ||
var inOther = ToBoolean(Call(otherRec['[[Has]]'], otherRec['[[Set]]'], [e])); // step 6.b.iii.1 | ||
if (inOther) { // step 6.b.iii.2 | ||
var alreadyInResult = SetDataHas(resultSetData, e); // step 6.b.iii.2.b | ||
if (!alreadyInResult) { // step 6.b.iii.2.c | ||
$push(resultSetData, e); // step 6.b.iii.c.i | ||
if (index < thisSize) { // step 5.c | ||
index += 1; // step 5.c.ii | ||
var inOther = ToBoolean(Call(otherRec['[[Has]]'], otherRec['[[Set]]'], [e])); // step 5.c.iii.1 | ||
if (inOther) { // step 6.c.iii.2 | ||
var alreadyInResult = SetDataHas(resultSetData, e); // step 5.c.iii.2.b | ||
if (!alreadyInResult) { // step 5.c.iii.2.c | ||
$push(resultSetData, e); // step 5.c.iii.c.i | ||
thisSize += 1; | ||
@@ -63,17 +62,17 @@ } | ||
}); | ||
} else { // step 7 | ||
var keysIter = GetIteratorFromMethod(otherRec['[[Set]]'], otherRec['[[Keys]]']); // step 7.a | ||
var next = true; // step 7.b | ||
while (next) { // step 7.c | ||
next = IteratorStep(keysIter); // step 7.c.i | ||
if (next) { // step 7.c.ii | ||
var nextValue = IteratorValue(next); // step 7.c.ii.1 | ||
} else { // step 6 | ||
var keysIter = GetIteratorFromMethod(otherRec['[[Set]]'], otherRec['[[Keys]]']); // step 6.a | ||
var next = true; // step 6.b | ||
while (next) { // step 6.c | ||
next = IteratorStep(keysIter); // step 6.c.i | ||
if (next) { // step 6.c.ii | ||
var nextValue = IteratorValue(next); // step 6.c.ii.1 | ||
if (nextValue === 0) { // step 7.c.ii.2 | ||
if (nextValue === 0) { // step 6.c.ii.2 | ||
nextValue = +0; | ||
} | ||
var alreadyInResult = SetDataHas(resultSetData, nextValue); // step 7.c.ii.4 | ||
var inThis = $setHas(O, nextValue); // step 7.c.ii.5 | ||
if (!alreadyInResult && inThis) { // step 7.c.ii.6 | ||
$push(resultSetData, nextValue); // step 7.c.ii.6.a | ||
var alreadyInResult = SetDataHas(resultSetData, nextValue); // step 6.c.ii.4 | ||
var inThis = $setHas(O, nextValue); // step 6.c.ii.5 | ||
if (!alreadyInResult && inThis) { // step 6.c.ii.6 | ||
$push(resultSetData, nextValue); // step 6.c.ii.6.a | ||
} | ||
@@ -84,6 +83,6 @@ } | ||
// var result = OrdinaryObjectCreate(%Set.prototype%, « [[SetData]] »); // step 8 | ||
// var result = OrdinaryObjectCreate(%Set.prototype%, « [[SetData]] »); // step 7 | ||
var result = new $Set(); | ||
// result.[[SetData]] = resultSetData; // step 9 | ||
// result.[[SetData]] = resultSetData; // step 8 | ||
forEach(resultSetData, function (e) { | ||
@@ -93,3 +92,3 @@ $setAdd(result, e); | ||
return result; // step 10 | ||
return result; // step 9 | ||
}; |
{ | ||
"name": "set.prototype.intersection", | ||
"version": "1.1.3", | ||
"version": "1.1.4", | ||
"description": "An ESnext spec-compliant `Set.prototype.intersection` shim/polyfill/replacement that works as far down as ES3", | ||
"main": "index.js", | ||
"exports": { | ||
".": [ | ||
{ | ||
"import": "./index.mjs", | ||
"require": "./index.js", | ||
"default": "./index.js" | ||
}, | ||
"./index.js" | ||
], | ||
".": "./index.js", | ||
"./auto": "./auto.js", | ||
@@ -31,4 +24,3 @@ "./polyfill": "./polyfill.js", | ||
"postlint": "es-shim-api --bound", | ||
"tests-esm": "nyc node test/index.mjs", | ||
"test": "npm run tests-only && npm run tests-esm", | ||
"test": "npm run tests-only", | ||
"posttest": "aud --production", | ||
@@ -63,8 +55,8 @@ "version": "auto-changelog && git add CHANGELOG.md", | ||
"dependencies": { | ||
"call-bind": "^1.0.5", | ||
"call-bind": "^1.0.7", | ||
"define-properties": "^1.2.1", | ||
"es-abstract": "^1.22.3", | ||
"es-errors": "^1.0.0", | ||
"es-abstract": "^1.23.2", | ||
"es-errors": "^1.3.0", | ||
"es-set": "^1.1.1", | ||
"is-set": "^2.0.2", | ||
"is-set": "^2.0.3", | ||
"stop-iteration-iterator": "^1.0.0" | ||
@@ -92,3 +84,3 @@ }, | ||
"safe-publish-latest": "^2.0.0", | ||
"tape": "^5.7.4" | ||
"tape": "^5.7.5" | ||
}, | ||
@@ -95,0 +87,0 @@ "testling": { |
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
37303
21
700
Updatedcall-bind@^1.0.7
Updatedes-abstract@^1.23.2
Updatedes-errors@^1.3.0
Updatedis-set@^2.0.3