immutable-object-methods
Advanced tools
+4
-8
@@ -1,8 +0,4 @@ | ||
| declare class Wrapper { | ||
| static map<T extends ReadonlyArray<any>, K extends number, U>(input: T, fn: (obj: Readonly<T[K]>, key: number) => U): Array<U>; | ||
| static map<T extends Readonly<any>, K extends keyof T, U>(input: T, fn: (obj: Readonly<T[K]>, key: string) => U): { | ||
| [key in K]: U; | ||
| }; | ||
| } | ||
| export declare const map: typeof Wrapper.map; | ||
| export {}; | ||
| export declare function map<T extends ReadonlyArray<any>, K extends number, U>(input: T, fn: (obj: Readonly<T[K]>, key: number) => U): Array<U>; | ||
| export declare function map<T extends Readonly<any>, K extends keyof T, U>(input: T, fn: (obj: Readonly<T[K]>, key: string) => U): { | ||
| [key in K]: U; | ||
| }; |
+7
-12
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var set_1 = require("./set"); | ||
| var Wrapper = /** @class */ (function () { | ||
| function Wrapper() { | ||
| function map(input, fn) { | ||
| var result = input; | ||
| for (var key in input) { | ||
| result = set_1.set(result, key, fn(input[key], key)); | ||
| } | ||
| Wrapper.map = function (input, fn) { | ||
| var result = input; | ||
| for (var key in input) { | ||
| result = set_1.set(result, key, fn(input[key], key)); | ||
| } | ||
| return result; | ||
| }; | ||
| return Wrapper; | ||
| }()); | ||
| exports.map = Wrapper.map; | ||
| return result; | ||
| } | ||
| exports.map = map; | ||
| //# sourceMappingURL=map.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"map.js","sourceRoot":"","sources":["../lib/map.ts"],"names":[],"mappings":";;AAAA,6BAA4B;AAE5B;IAAA;IAmBA,CAAC;IATQ,WAAG,GAAV,UAAW,KAAU,EAAE,EAAO;QAC5B,IAAI,MAAM,GAAQ,KAAK,CAAC;QAExB,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;YACvB,MAAM,GAAG,SAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SAChD;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,cAAC;AAAD,CAAC,AAnBD,IAmBC;AAEY,QAAA,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC"} | ||
| {"version":3,"file":"map.js","sourceRoot":"","sources":["../lib/map.ts"],"names":[],"mappings":";;AAAA,6BAA4B;AAY5B,SAAgB,GAAG,CAAC,KAAU,EAAE,EAAO;IACrC,IAAI,MAAM,GAAQ,KAAK,CAAC;IAExB,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACvB,MAAM,GAAG,SAAG,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;KAChD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AARD,kBAQC"} |
@@ -1,1 +0,2 @@ | ||
| export declare const mergeDeep: (input: any, changes: any) => any; | ||
| import { Merge } from 'type-fest'; | ||
| export declare function mergeDeep<InputType, ChangesType>(input: InputType, changes: ChangesType): Merge<InputType, ChangesType>; |
@@ -7,3 +7,3 @@ "use strict"; | ||
| }; | ||
| exports.mergeDeep = function (input, changes) { | ||
| function mergeDeep(input, changes) { | ||
| var result = input; | ||
@@ -13,3 +13,3 @@ for (var key in changes) { | ||
| var newChild = isObject(childChange) | ||
| ? exports.mergeDeep(input[key] || {}, childChange) | ||
| ? mergeDeep(input[key] || {}, childChange) | ||
| : childChange; | ||
@@ -19,3 +19,5 @@ result = set_1.set(result, key, newChild); | ||
| return result; | ||
| }; | ||
| } | ||
| exports.mergeDeep = mergeDeep; | ||
| ; | ||
| //# sourceMappingURL=merge-deep.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"merge-deep.js","sourceRoot":"","sources":["../lib/merge-deep.ts"],"names":[],"mappings":";;AAAA,6BAA4B;AAE5B,IAAM,QAAQ,GAAG,UAAC,GAAY;IAC5B,OAAA,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAA9D,CAA8D,CAAC;AAEpD,QAAA,SAAS,GAAG,UAAC,KAAU,EAAE,OAAY;IAChD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAM,GAAG,IAAI,OAAO,EAAE;QACzB,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;YACpC,CAAC,CAAC,iBAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC;YAC1C,CAAC,CAAC,WAAW,CAAC;QAEhB,MAAM,GAAG,SAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;KACrC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"} | ||
| {"version":3,"file":"merge-deep.js","sourceRoot":"","sources":["../lib/merge-deep.ts"],"names":[],"mappings":";;AAAA,6BAA4B;AAG5B,IAAM,QAAQ,GAAG,UAAC,GAAY;IAC5B,OAAA,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;AAA9D,CAA8D,CAAC;AAQjE,SAAgB,SAAS,CAAC,KAAU,EAAE,OAAY;IAChD,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAM,GAAG,IAAI,OAAO,EAAE;QACzB,IAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAEjC,IAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;YACpC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC;YAC1C,CAAC,CAAC,WAAW,CAAC;QAEhB,MAAM,GAAG,SAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;KACrC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAdD,8BAcC;AAAA,CAAC"} |
+5
-8
| import { Merge } from 'type-fest'; | ||
| declare type ArgType = Record<keyof any, any>; | ||
| declare type _Merge<T, U> = T extends Merge<T, U> ? T : Merge<T, U>; | ||
| declare class Wrapper { | ||
| static merge<T>(input: Readonly<T>): T; | ||
| static merge<T, U extends ArgType>(input: Readonly<T>, arg: Readonly<U>): _Merge<T, U>; | ||
| static merge<T, U extends ArgType, V extends ArgType>(input: Readonly<T>, args1: Readonly<U>, args2: Readonly<V>): _Merge<_Merge<T, U>, V>; | ||
| static merge<T, U extends ArgType, V extends ArgType, W extends ArgType>(input: Readonly<T>, args1: Readonly<U>, args2: Readonly<V>, args3: Readonly<W>): _Merge<_Merge<_Merge<T, U>, V>, W>; | ||
| static merge(input: any, ...args: any[]): any; | ||
| } | ||
| export declare const merge: typeof Wrapper.merge; | ||
| export declare function merge<T>(input: Readonly<T>): T; | ||
| export declare function merge<T, U extends ArgType>(input: Readonly<T>, arg: Readonly<U>): _Merge<T, U>; | ||
| export declare function merge<T, U extends ArgType, V extends ArgType>(input: Readonly<T>, args1: Readonly<U>, args2: Readonly<V>): _Merge<_Merge<T, U>, V>; | ||
| export declare function merge<T, U extends ArgType, V extends ArgType, W extends ArgType>(input: Readonly<T>, args1: Readonly<U>, args2: Readonly<V>, args3: Readonly<W>): _Merge<_Merge<_Merge<T, U>, V>, W>; | ||
| export declare function merge(input: any, ...args: any[]): any; | ||
| export {}; |
+16
-21
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var set_1 = require("./set"); | ||
| var Wrapper = /** @class */ (function () { | ||
| function Wrapper() { | ||
| function merge(input) { | ||
| var args = []; | ||
| for (var _i = 1; _i < arguments.length; _i++) { | ||
| args[_i - 1] = arguments[_i]; | ||
| } | ||
| Wrapper.merge = function (input) { | ||
| var args = []; | ||
| for (var _i = 1; _i < arguments.length; _i++) { | ||
| args[_i - 1] = arguments[_i]; | ||
| var changes = {}; | ||
| args.forEach(function (obj) { | ||
| for (var key in obj) { | ||
| changes[key] = obj[key]; | ||
| } | ||
| var changes = {}; | ||
| args.forEach(function (obj) { | ||
| for (var key in obj) { | ||
| changes[key] = obj[key]; | ||
| } | ||
| }); | ||
| var result = input; | ||
| for (var key in changes) { | ||
| result = set_1.set(result, key, changes[key]); | ||
| } | ||
| return result; | ||
| }; | ||
| return Wrapper; | ||
| }()); | ||
| exports.merge = Wrapper.merge; | ||
| }); | ||
| var result = input; | ||
| for (var key in changes) { | ||
| result = set_1.set(result, key, changes[key]); | ||
| } | ||
| return result; | ||
| } | ||
| exports.merge = merge; | ||
| //# sourceMappingURL=merge.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"merge.js","sourceRoot":"","sources":["../lib/merge.ts"],"names":[],"mappings":";;AAEA,6BAA4B;AAM5B;IAAA;IAkCA,CAAC;IAhBQ,aAAK,GAAZ,UAAa,KAAU;QAAE,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,6BAAc;;QACrC,IAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;YACf,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aACzB;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAQ,KAAK,CAAC;QAExB,KAAK,IAAM,GAAG,IAAI,OAAO,EAAE;YACzB,MAAM,GAAG,SAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;SACzC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,cAAC;AAAD,CAAC,AAlCD,IAkCC;AAEc,QAAA,KAAK,GAAK,OAAO,OAAC"} | ||
| {"version":3,"file":"merge.js","sourceRoot":"","sources":["../lib/merge.ts"],"names":[],"mappings":";;AAEA,6BAA4B;AA4B5B,SAAgB,KAAK,CAAC,KAAU;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IAC9C,IAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG;QACf,KAAK,IAAM,GAAG,IAAI,GAAG,EAAE;YACrB,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;SACzB;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAQ,KAAK,CAAC;IAExB,KAAK,IAAM,GAAG,IAAI,OAAO,EAAE;QACzB,MAAM,GAAG,SAAG,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;KACzC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAfD,sBAeC"} |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"set.js","sourceRoot":"","sources":["../lib/set.ts"],"names":[],"mappings":";;AAEa,QAAA,GAAG,GAAG,UAKjB,KAAkB,EAClB,GAAM,EACN,KAAQ;IAER,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IAED,IAAM,MAAM,GAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,QAAQ;QACpC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAEpB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"} | ||
| {"version":3,"file":"set.js","sourceRoot":"","sources":["../lib/set.ts"],"names":[],"mappings":";;AAEa,QAAA,GAAG,GAAG,UAKjB,KAAkB,EAClB,GAAM,EACN,KAAQ;IAER,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE;QACxB,OAAO,KAAK,CAAC;KACd;IAED,IAAM,MAAM,GAAQ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,QAAQ;QAClC,MAAM,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAEpB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"} |
+17
-20
| import { set } from './set'; | ||
| class Wrapper { | ||
| static map<T extends ReadonlyArray<any>, K extends number, U>( | ||
| input: T, | ||
| fn: (obj: Readonly<T[K]>, key: number) => U, | ||
| ): Array<U>; | ||
| static map<T extends Readonly<any>, K extends keyof T, U>( | ||
| input: T, | ||
| fn: (obj: Readonly<T[K]>, key: string) => U, | ||
| ): { [key in K]: U }; | ||
| static map(input: any, fn: any) { | ||
| let result: any = input; | ||
| for (const key in input) { | ||
| result = set(result, key, fn(input[key], key)); | ||
| } | ||
| return result; | ||
| export function map<T extends ReadonlyArray<any>, K extends number, U>( | ||
| input: T, | ||
| fn: (obj: Readonly<T[K]>, key: number) => U, | ||
| ): Array<U>; | ||
| export function map<T extends Readonly<any>, K extends keyof T, U>( | ||
| input: T, | ||
| fn: (obj: Readonly<T[K]>, key: string) => U, | ||
| ): { [key in K]: U }; | ||
| export function map(input: any, fn: any) { | ||
| let result: any = input; | ||
| for (const key in input) { | ||
| result = set(result, key, fn(input[key], key)); | ||
| } | ||
| return result; | ||
| } | ||
| export const map = Wrapper.map; |
| import { set } from './set'; | ||
| import { Merge } from 'type-fest'; | ||
@@ -6,3 +7,9 @@ const isObject = (obj: unknown) => | ||
| export const mergeDeep = (input: any, changes: any): any => { | ||
| export function mergeDeep <InputType, ChangesType>( | ||
| input: InputType, | ||
| changes: ChangesType, | ||
| ): Merge<InputType, ChangesType> | ||
| export function mergeDeep(input: any, changes: any) { | ||
| let result = input; | ||
@@ -9,0 +16,0 @@ |
+34
-33
@@ -9,38 +9,39 @@ import { Merge } from 'type-fest'; | ||
| class Wrapper { | ||
| static merge<T>(input: Readonly<T>): T; | ||
| static merge<T, U extends ArgType>( | ||
| input: Readonly<T>, | ||
| arg: Readonly<U>, | ||
| ): _Merge<T, U>; | ||
| static merge<T, U extends ArgType, V extends ArgType>( | ||
| input: Readonly<T>, | ||
| args1: Readonly<U>, | ||
| args2: Readonly<V>, | ||
| ): _Merge<_Merge<T, U>, V>; | ||
| static merge<T, U extends ArgType, V extends ArgType, W extends ArgType>( | ||
| input: Readonly<T>, | ||
| args1: Readonly<U>, | ||
| args2: Readonly<V>, | ||
| args3: Readonly<W>, | ||
| ): _Merge<_Merge<_Merge<T, U>, V>, W>; | ||
| static merge(input: any, ...args: any[]): any; | ||
| static merge(input: any, ...args: any[]) { | ||
| const changes: any = {}; | ||
| args.forEach((obj) => { | ||
| for (const key in obj) { | ||
| changes[key] = obj[key]; | ||
| } | ||
| }); | ||
| export function merge<T>(input: Readonly<T>): T; | ||
| export function merge<T, U extends ArgType>( | ||
| input: Readonly<T>, | ||
| arg: Readonly<U>, | ||
| ): _Merge<T, U>; | ||
| export function merge<T, U extends ArgType, V extends ArgType>( | ||
| input: Readonly<T>, | ||
| args1: Readonly<U>, | ||
| args2: Readonly<V>, | ||
| ): _Merge<_Merge<T, U>, V>; | ||
| export function merge< | ||
| T, | ||
| U extends ArgType, | ||
| V extends ArgType, | ||
| W extends ArgType | ||
| >( | ||
| input: Readonly<T>, | ||
| args1: Readonly<U>, | ||
| args2: Readonly<V>, | ||
| args3: Readonly<W>, | ||
| ): _Merge<_Merge<_Merge<T, U>, V>, W>; | ||
| export function merge(input: any, ...args: any[]): any; | ||
| export function merge(input: any, ...args: any[]) { | ||
| const changes: any = {}; | ||
| args.forEach((obj) => { | ||
| for (const key in obj) { | ||
| changes[key] = obj[key]; | ||
| } | ||
| }); | ||
| let result: any = input; | ||
| let result: any = input; | ||
| for (const key in changes) { | ||
| result = set(result, key, changes[key]); | ||
| } | ||
| for (const key in changes) { | ||
| result = set(result, key, changes[key]); | ||
| } | ||
| return result; | ||
| } | ||
| return result; | ||
| } | ||
| export const { merge } = Wrapper; |
+1
-1
@@ -18,3 +18,3 @@ import { Merge } from 'type-fest'; | ||
| Object.keys(input).forEach((inputKey) => { | ||
| Object.keys(input).forEach((inputKey) => { | ||
| result[inputKey] = inputKey === key ? value : input[inputKey]; | ||
@@ -21,0 +21,0 @@ }); |
+6
-7
| { | ||
| "name": "immutable-object-methods", | ||
| "version": "3.0.1", | ||
| "version": "3.0.2", | ||
| "description": "Update normal plain javascript object, immutable style. Simlar to how immutable.js, seamless-immutable etc does it but a lot smaller and simpler.", | ||
@@ -16,3 +16,3 @@ "main": "dist/index.js", | ||
| }, | ||
| "author": "mic.com", | ||
| "author": "pizza-skull", | ||
| "license": "MIT", | ||
@@ -24,12 +24,11 @@ "bugs": { | ||
| "devDependencies": { | ||
| "ava": "^1.4.1", | ||
| "ava": "^3.7.1", | ||
| "package-json-to-readme": "^2.1.1", | ||
| "prettier": "^1.17.0", | ||
| "prettier": "^2.0.4", | ||
| "ts-node": "^8.1.0", | ||
| "type-fest": "^0.4.1", | ||
| "typescript": "^3.4.5" | ||
| "type-fest": "^0.13.1", | ||
| "typescript": "^3.8.3" | ||
| }, | ||
| "dependencies": {}, | ||
| "ava": { | ||
| "compileEnhancements": false, | ||
| "extensions": [ | ||
@@ -36,0 +35,0 @@ "ts" |
+8
-7
@@ -105,5 +105,5 @@ import test from 'ava'; | ||
| test('merge w array', (t) => { | ||
| const input = [0,,,4]; | ||
| const input = [0, , , 4]; | ||
| const actual = merge(input, [1, 2, 3]); | ||
| const expected = [1, 2, 3,4]; | ||
| const expected = [1, 2, 3, 4]; | ||
| t.deepEqual(actual, expected); | ||
@@ -251,2 +251,3 @@ t.true(Array.isArray(actual)); | ||
| const actual = mergeDeep(input, changes); | ||
| const expected = { | ||
@@ -365,6 +366,6 @@ a: { | ||
| test('map array', (t) => { | ||
| const input = [1,2,3,4] | ||
| const actual = map(input, num => num % 2); | ||
| const expected = [1,0,1,0]; | ||
| t.deepEqual(actual, expected) | ||
| }) | ||
| const input = [1, 2, 3, 4]; | ||
| const actual = map(input, (num) => num % 2); | ||
| const expected = [1, 0, 1, 0]; | ||
| t.deepEqual(actual, expected); | ||
| }); |
29323
-1.37%661
-1.49%