Socket
Socket
Sign inDemoInstall

map-obj

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

map-obj - npm Package Compare versions

Comparing version 4.3.0 to 5.0.0

186

index.d.ts

@@ -1,71 +0,65 @@

// Unique symbol cannot be declared in a namespace directly, so we declare it top-level
// See: https://github.com/sindresorhus/map-obj/pull/38#discussion_r702396878
declare const skipSymbol: unique symbol;
/**
Return this value from a `mapper` function to remove a key from an object.
declare namespace mapObject {
type Mapper<
SourceObjectType extends {[key: string]: any},
MappedObjectKeyType extends string,
MappedObjectValueType
> = (
sourceKey: keyof SourceObjectType,
sourceValue: SourceObjectType[keyof SourceObjectType],
source: SourceObjectType
) => [
targetKey: MappedObjectKeyType,
targetValue: MappedObjectValueType,
mapperOptions?: mapObject.MapperOptions
] | typeof mapObject.mapObjectSkip;
@example
```
import mapObject, {mapObjectSkip} from 'map-obj';
interface Options {
/**
Recurse nested objects and objects in arrays.
const object = {one: 1, two: 2}
const mapper = (key, value) => value === 1 ? [key, value] : mapObjectSkip
const result = mapObject(object, mapper);
@default false
*/
deep?: boolean;
console.log(result);
//=> {one: 1}
```
*/
export const mapObjectSkip: unique symbol;
/**
Target object to map properties on to.
export type Mapper<
SourceObjectType extends Record<string, any>,
MappedObjectKeyType extends string,
MappedObjectValueType,
> = (
sourceKey: keyof SourceObjectType,
sourceValue: SourceObjectType[keyof SourceObjectType],
source: SourceObjectType
) => [
targetKey: MappedObjectKeyType,
targetValue: MappedObjectValueType,
mapperOptions?: MapperOptions,
] | typeof mapObjectSkip;
@default {}
*/
target?: {[key: string]: any};
}
export interface Options {
/**
Recurse nested objects and objects in arrays.
interface DeepOptions extends Options {
deep: true;
}
@default false
*/
readonly deep?: boolean;
interface TargetOptions<TargetObjectType extends {[key: string]: any}> extends Options {
target: TargetObjectType;
}
/**
The target object to map properties on to.
interface MapperOptions {
/**
Whether `targetValue` should be recursed.
@default {}
*/
readonly target?: Record<string, any>;
}
Requires `deep: true`.
export interface DeepOptions extends Options {
readonly deep: true;
}
@default true
*/
readonly shouldRecurse?: boolean;
}
export interface TargetOptions<TargetObjectType extends Record<string, any>> extends Options {
readonly target: TargetObjectType;
}
export interface MapperOptions {
/**
Return this value from a `mapper` function to remove a key from an object.
Whether `targetValue` should be recursed.
@example
```
const mapObject = require('map-obj');
Requires `deep: true`.
const object = {one: 1, two: 2}
const mapper = (key, value) => value === 1 ? [key, value] : mapObject.mapObjectSkip
const result = mapObject(object, mapper);
console.log(result);
//=> {one: 1}
```
@default true
*/
const mapObjectSkip: typeof skipSymbol
readonly shouldRecurse?: boolean;
}

@@ -76,8 +70,8 @@

@param source - Source object to copy properties from.
@param mapper - Mapping function.
@param source - The source object to copy properties from.
@param mapper - A mapping function.
@example
```
import mapObject = require('map-obj');
import mapObject, {mapObjectSkip} from 'map-obj';

@@ -93,61 +87,59 @@ const newObject = mapObject({foo: 'bar'}, (key, value) => [value, key]);

const newObject = mapObject({one: 1, two: 2}, (key, value) => value === 1 ? [key, value] : mapObject.mapObjectSkip);
const newObject = mapObject({one: 1, two: 2}, (key, value) => value === 1 ? [key, value] : mapObjectSkip);
//=> {one: 1}
```
*/
declare function mapObject<
SourceObjectType extends object,
TargetObjectType extends {[key: string]: any},
export default function mapObject<
SourceObjectType extends Record<string, unknown>,
TargetObjectType extends Record<string, any>,
MappedObjectKeyType extends string,
MappedObjectValueType
MappedObjectValueType,
>(
source: SourceObjectType,
mapper: mapObject.Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
mapper: Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
>,
options: mapObject.DeepOptions & mapObject.TargetOptions<TargetObjectType>
): TargetObjectType & {[key: string]: unknown};
declare function mapObject<
SourceObjectType extends object,
options: DeepOptions & TargetOptions<TargetObjectType>
): TargetObjectType & Record<string, unknown>;
export default function mapObject<
SourceObjectType extends Record<string, unknown>,
MappedObjectKeyType extends string,
MappedObjectValueType
MappedObjectValueType,
>(
source: SourceObjectType,
mapper: mapObject.Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
mapper: Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
>,
options: mapObject.DeepOptions
): {[key: string]: unknown};
declare function mapObject<
SourceObjectType extends {[key: string]: any},
TargetObjectType extends {[key: string]: any},
options: DeepOptions
): Record<string, unknown>;
export default function mapObject<
SourceObjectType extends Record<string, any>,
TargetObjectType extends Record<string, any>,
MappedObjectKeyType extends string,
MappedObjectValueType
MappedObjectValueType,
>(
source: SourceObjectType,
mapper: mapObject.Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
mapper: Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
>,
options: mapObject.TargetOptions<TargetObjectType>
options: TargetOptions<TargetObjectType>
): TargetObjectType & {[K in MappedObjectKeyType]: MappedObjectValueType};
declare function mapObject<
SourceObjectType extends {[key: string]: any},
export default function mapObject<
SourceObjectType extends Record<string, any>,
MappedObjectKeyType extends string,
MappedObjectValueType
MappedObjectValueType,
>(
source: SourceObjectType,
mapper: mapObject.Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
mapper: Mapper<
SourceObjectType,
MappedObjectKeyType,
MappedObjectValueType
>,
options?: mapObject.Options
options?: Options
): {[K in MappedObjectKeyType]: MappedObjectValueType};
export = mapObject;

@@ -1,18 +0,17 @@

'use strict';
const isObject = value => typeof value === 'object' && value !== null;
const mapObjectSkip = Symbol('skip');
// Customized for this use-case
const isObjectCustom = value =>
isObject(value) &&
!(value instanceof RegExp) &&
!(value instanceof Error) &&
!(value instanceof Date);
isObject(value)
&& !(value instanceof RegExp)
&& !(value instanceof Error)
&& !(value instanceof Date);
const mapObject = (object, mapper, options, isSeen = new WeakMap()) => {
export const mapObjectSkip = Symbol('mapObjectSkip');
const _mapObject = (object, mapper, options, isSeen = new WeakMap()) => {
options = {
deep: false,
target: {},
...options
...options,
};

@@ -29,3 +28,3 @@

const mapArray = array => array.map(element => isObjectCustom(element) ? mapObject(element, mapper, options, isSeen) : element);
const mapArray = array => array.map(element => isObjectCustom(element) ? _mapObject(element, mapper, options, isSeen) : element);
if (Array.isArray(object)) {

@@ -50,5 +49,5 @@ return mapArray(object);

if (options.deep && shouldRecurse && isObjectCustom(newValue)) {
newValue = Array.isArray(newValue) ?
mapArray(newValue) :
mapObject(newValue, mapper, options, isSeen);
newValue = Array.isArray(newValue)
? mapArray(newValue)
: _mapObject(newValue, mapper, options, isSeen);
}

@@ -62,3 +61,3 @@

module.exports = (object, mapper, options) => {
export default function mapObject(object, mapper, options) {
if (!isObject(object)) {

@@ -68,5 +67,3 @@ throw new TypeError(`Expected an object, got \`${object}\` (${typeof object})`);

return mapObject(object, mapper, options);
};
module.exports.mapObjectSkip = mapObjectSkip;
return _mapObject(object, mapper, options);
}
{
"name": "map-obj",
"version": "4.3.0",
"version": "5.0.0",
"description": "Map object keys and values into a new object",

@@ -13,4 +13,6 @@ "license": "MIT",

},
"type": "module",
"exports": "./index.js",
"engines": {
"node": ">=8"
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
},

@@ -40,6 +42,6 @@ "scripts": {

"devDependencies": {
"ava": "^2.0.0",
"tsd": "^0.14.0",
"xo": "^0.24.0"
"ava": "^3.15.0",
"tsd": "^0.18.0",
"xo": "^0.45.0"
}
}

@@ -14,3 +14,3 @@ # map-obj

```js
const mapObject = require('map-obj');
import mapObject, {mapObjectSkip} from 'map-obj';

@@ -26,3 +26,3 @@ const newObject = mapObject({foo: 'bar'}, (key, value) => [value, key]);

const newObject = mapObject({one: 1, two: 2}, (key, value) => value === 1 ? [key, value] : mapObject.mapObjectSkip);
const newObject = mapObject({one: 1, two: 2}, (key, value) => value === 1 ? [key, value] : mapObjectSkip);
//=> {one: 1}

@@ -39,9 +39,9 @@ ```

Source object to copy properties from.
The source object to copy properties from.
#### mapper
Type: `(sourceKey, sourceValue, source) => [targetKey, targetValue, mapperOptions?] | mapObject.mapObjectSkip`
Type: `(sourceKey, sourceValue, source) => [targetKey, targetValue, mapperOptions?] | mapObjectSkip`
Mapping function.
A mapping function.

@@ -77,5 +77,5 @@ ##### mapperOptions

Target object to map properties on to.
The target object to map properties on to.
### mapObject.mapObjectSkip
### mapObjectSkip

@@ -85,6 +85,6 @@ Return this value from a `mapper` function to exclude the key from the new object.

```js
const mapObject = require('map-obj');
import mapObject, {mapObjectSkip} from 'map-obj';
const object = {one: 1, two: 2}
const mapper = (key, value) => value === 1 ? [key, value] : mapObject.mapObjectSkip
const mapper = (key, value) => value === 1 ? [key, value] : mapObjectSkip
const result = mapObject(object, mapper);

@@ -91,0 +91,0 @@

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