New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

index-array-by

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

index-array-by - npm Package Compare versions

Comparing version 1.1.0 to 1.2.0

.idea/encodings.xml

93

dist/index-array-by.js

@@ -102,2 +102,52 @@ (function webpackUniversalModuleDefinition(root, factory) {

function _toConsumableArray(arr) {
if (Array.isArray(arr)) {
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
arr2[i] = arr[i];
}
return arr2;
} else {
return Array.from(arr);
}
}
var _slicedToArray = function () {
function sliceIterator(arr, i) {
var _arr = [];
var _n = true;
var _d = false;
var _e = undefined;
try {
for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
_arr.push(_s.value);
if (i && _arr.length === i) break;
}
} catch (err) {
_d = true;
_e = err;
} finally {
try {
if (!_n && _i["return"]) _i["return"]();
} finally {
if (_d) throw _e;
}
}
return _arr;
}
return function (arr, i) {
if (Array.isArray(arr)) {
return arr;
} else if (Symbol.iterator in Object(arr)) {
return sliceIterator(arr, i);
} else {
throw new TypeError("Invalid attempt to destructure non-iterable instance");
}
};
}();
function _objectWithoutProperties(obj, keys) {

@@ -117,2 +167,3 @@ var target = {};

var multiItem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var flattenKeys = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;

@@ -127,3 +178,3 @@

return list.reduce(function (res, item) {
var indexedResult = list.reduce(function (res, item) {
var iterObj = res;

@@ -165,5 +216,43 @@ var itemVal = item;

});
return res;
}, {});
if (multiItem instanceof Function) {
// Reduce leaf multiple values
var leafGroup = indexedResult;
for (var i = 1; i < keys.length - 1; i++) {
leafGroup = Object.values(leafGroup);
}
Object.keys(leafGroup).forEach(function (k) {
return leafGroup[k] = multiItem(leafGroup[k]);
});
}
var result = indexedResult;
if (flattenKeys) {
// flatten into array
result = [];
(function flatten(node) {
var accKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
if (accKeys.length === keys.length) {
result.push({
keys: accKeys,
vals: node
});
} else {
Object.entries(node).forEach(function (_ref2) {
var _ref3 = _slicedToArray(_ref2, 2),
key = _ref3[0],
val = _ref3[1];
return flatten(val, [].concat(_toConsumableArray(accKeys), [key]));
});
}
})(indexedResult); //IIFS
}
return result;
};

@@ -170,0 +259,0 @@

2

dist/index-array-by.min.js

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.indexBy=t():e.indexBy=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){var r,o,u;o=[e,t],void 0===(u="function"==typeof(r=function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=(t instanceof Array?t:[t]).map(function(e){return{keyAccessor:e,isProp:!(e instanceof Function)}});return e.reduce(function(e,t){var o=e,u=t;return r.forEach(function(e,t){var f=e.keyAccessor,i=void 0;if(e.isProp){var c=u,p=c[f],s=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(c,[f]);i=p,u=s}else i=f(u);t+1<r.length?(o.hasOwnProperty(i)||(o[i]={}),o=o[i]):n?(o.hasOwnProperty(i)||(o[i]=[]),o[i].push(u)):o[i]=u}),e},{})},e.exports=t.default})?r.apply(t,o):r)||(e.exports=u)}])});
!function(r,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.indexBy=e():r.indexBy=e()}("undefined"!=typeof self?self:this,function(){return function(t){var n={};function o(r){if(n[r])return n[r].exports;var e=n[r]={i:r,l:!1,exports:{}};return t[r].call(e.exports,e,e.exports,o),e.l=!0,e.exports}return o.m=t,o.c=n,o.d=function(r,e,t){o.o(r,e)||Object.defineProperty(r,e,{configurable:!1,enumerable:!0,get:t})},o.n=function(r){var e=r&&r.__esModule?function(){return r.default}:function(){return r};return o.d(e,"a",e),e},o.o=function(r,e){return Object.prototype.hasOwnProperty.call(r,e)},o.p="",o(o.s=0)}([function(r,e,t){var n,o,i;o=[r,e],void 0===(i="function"==typeof(n=function(r,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var f=function(r,e){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return function(r,e){var t=[],n=!0,o=!1,i=void 0;try{for(var u,f=r[Symbol.iterator]();!(n=(u=f.next()).done)&&(t.push(u.value),!e||t.length!==e);n=!0);}catch(r){o=!0,i=r}finally{try{!n&&f.return&&f.return()}finally{if(o)throw i}}return t}(r,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")};e.default=function(r,e){var c=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],t=3<arguments.length&&void 0!==arguments[3]&&arguments[3],s=(e instanceof Array?e:[e]).map(function(r){return{keyAccessor:r,isProp:!(r instanceof Function)}}),n=r.reduce(function(r,e){var f=r,a=e;return s.forEach(function(r,e){var t=r.keyAccessor,n=void 0;if(r.isProp){var o=a,i=o[t],u=function(r,e){var t={};for(var n in r)0<=e.indexOf(n)||Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n]);return t}(o,[t]);n=i,a=u}else n=t(a);e+1<s.length?(f.hasOwnProperty(n)||(f[n]={}),f=f[n]):c?(f.hasOwnProperty(n)||(f[n]=[]),f[n].push(a)):f[n]=a}),r},{});if(c instanceof Function){for(var o=n,i=1;i<s.length-1;i++)o=Object.values(o);Object.keys(o).forEach(function(r){return o[r]=c(o[r])})}var u=n;return t&&(u=[],function o(r){var i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[];i.length===s.length?u.push({keys:i,vals:r}):Object.entries(r).forEach(function(r){var e=f(r,2),t=e[0],n=e[1];return o(n,[].concat(function(r){if(Array.isArray(r)){for(var e=0,t=Array(r.length);e<r.length;e++)t[e]=r[e];return t}return Array.from(r)}(i),[t]))})}(n)),u},r.exports=e.default})?n.apply(e,o):n)||(r.exports=i)}])});

@@ -1,2 +0,2 @@

export default (list, keyAccessors, multiItem = true) => {
export default (list, keyAccessors, multiItem = true, flattenKeys = false) => {

@@ -8,3 +8,3 @@ const keys = (keyAccessors instanceof Array ? keyAccessors : [keyAccessors]).map(key => ({

return list.reduce((res, item) => {
const indexedResult = list.reduce((res, item) => {
let iterObj = res;

@@ -39,5 +39,34 @@ let itemVal = item;

});
return res;
}, {});
if (multiItem instanceof Function) {
// Reduce leaf multiple values
let leafGroup = indexedResult;
for(let i = 1; i < keys.length - 1; i++) {
leafGroup = Object.values(leafGroup);
}
Object.keys(leafGroup).forEach(k => leafGroup[k] = multiItem(leafGroup[k]));
}
let result = indexedResult;
if (flattenKeys) {
// flatten into array
result = [];
(function flatten(node, accKeys = []) {
if (accKeys.length === keys.length) {
result.push({
keys: accKeys,
vals: node
});
} else {
Object.entries(node)
.forEach(([key, val]) => flatten(val, [...accKeys, key]));
}
})(indexedResult); //IIFS
}
return result;
}
{
"name": "index-array-by",
"version": "1.1.0",
"version": "1.2.0",
"description": "A utility function to index arrays by any criteria",

@@ -5,0 +5,0 @@ "main": "dist/index-array-by.min.js",

@@ -35,3 +35,4 @@ # index-array-by

Use `indexBy` to index it by a given attribute (string type `keyAccessor`) or any other custom criteria (function type `keyAccessor`). You can also pass an array of `keyAccessors` to retrieve a nested object recursively indexed by the multiple keys.
Use the third parameter (`multiItem`) to indicate whether each key should point to a single item (unadvised if the keys are not unique) or an array of multiple items (default behavior).
Use the third parameter (`multiItem`) to indicate whether each key should point to a single item (unadvised if the keys are not unique) or an array of multiple items (default behavior). This parameter also accepts a transformation function with the method to reduce multiple items into a single one.
A fourth optional parameter (`flattenKeys`) (default: `false`) allows you to receive a flat array structure instead of the default nested format, with each item formatted as `{ keys: [<ordered unique keys for the item>], vals: <single or multiple item> }`.

@@ -95,1 +96,23 @@ ```

```
```
indexBy(people, 'name', items => Math.max(...items.map(item => item.age)));
// Result:
{
John: 32,
Mary: 28
}
```
```
indexBy(people, ['name', 'surname'], true, true));
// Result:
[
{ keys: ['Mary', 'Jane'], vals: [{ age: 28 }] },
{ keys: ['John', 'Smith'], vals: [{ age: 24 }] },
{ keys: ['John', 'Doe'], vals: [{ age: 32 }] }
]
```

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc