
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
typed-json-transform
Advanced tools
_ like library written in typescript using templated generics where reasonable
usage
import { map } from 'typed-json-transform';
const strings = ['apple', 'bannana'];
const lengths = map(strings, (str: string) => {
return str.length;
})
'lengths' is typed as Array because map() is templated to return an array of types deduced by the map function
its value is as expected:
[ 5, 7 ]
this library is NOT a drop-in replacement for underscore ot lodash, however functions with similiar names should do the same thing.
documentation = index.d.ts:
declare module 'typed-json-transform' {
/*
* Container Methods
*/
interface SIO { [index: string]: any }
function each<T>(iter: { [index: string]: T } | T[], fn: (val: T, index?: string | number, breakLoop?: () => void) => void): void
function extend<T, U>(target: T & SIO, source: U & SIO): T & U
function extendN<T>(target: T & SIO, ...sources: Array<SIO>): T
function assign<A, B>(a: A, b: B): A & B
function combine<A, B>(a: A, b: B): A & B
function combineN<T>(retType: T, ...args: SIO[]): T
function any(iterable: Array<any>, fn: Function): boolean
function every<T>(iterable: any[], fn: Function): boolean
function map<R, I>(iter: { [index: string]: I } | I[], fn: (val: I, index: any) => R): R[]
function reduce<T, S>(input: Array<T>, fn: (input: T, memo: S) => S, base?: S): S
function reduce<T, S>(input: { [index: string]: T }, fn: (input: T, memo: S) => S, base?: S): S
function sum<T>(input: { [index: string]: T } | Array<T>, fn: (input: T) => number): number
function greatestResult<T>(input: { [index: string]: T } | Array<T>, fn: (input: T) => number): number
function sumIfEvery<T>(input: { [index: string]: T } | Array<T>, fn: (input: T) => number): number
function geoSum<T>(input: { [index: string]: T } | Array<T>, fn: (input: T, memo: number) => number): number
function union<T>(...args: T[][]): T[]
function intersect<T>(...args: T[][]): T[]
function difference<T>(a: T[], b: T[]): T[]
function contains<T>(set: any[], match: T): boolean
function containsAny<T>(set: any[], match: any[]): boolean
function containsAll<T>(set: any[], match: any[]): boolean
interface ComparisonOptions {
[index: string]: boolean;
strict: boolean;
}
function isEqual(actual: any, expected: any, opts?: ComparisonOptions): boolean
function prune<T>(obj: T): T
function plain<T>(obj: T): T
function clone<T>(input: T): T
function arrayify<T>(val: T | T[]): T[]
function okmap<T>(iterable: Object | Array<any>, fn: (v: any, k: string) => { [index: string]: T }): { [index: string]: T }
function stringify(value: any, replacer?: (number | string)[], space?: string | number): string
/*
* Keypath
*/
namespace Keypath {
interface Options extends SIO {
allLevels?: boolean;
diffArrays?: boolean;
}
}
function setValueForKeyPath(value: any, keyPath: string, input: SIO): void
function mergeValueAtKeypath(value: any, keyPath: string, obj: SIO): void
function valueForKeyPath(keyPath: string, input: SIO): any
function unsetKeyPath(keyPath: string, obj: SIO): boolean
function keyPathContainsPath(keyPath: string, ignorePath: string): boolean
function filteredKeyPaths(_keyPaths: string[], ignore?: string[]): string[]
function keyPaths(obj: SIO, _options?: Keypath.Options, _stack?: string[], parent?: string): string[]
function allKeyPaths(obj: SIO): string[]
function flatObject(object: any, options?: { includeBranches?: boolean }): SIO
/*
* Diff / Mongo Method
*/
namespace Mongo {
interface Document extends SIO {
_id: string;
}
interface Collection {
findOne: Function;
find: Function;
update: Function;
}
interface UpdateOptions {
collection?: Collection;
get?: Function;
set?: Function;
ignore?: string[];
}
interface Modifier {
$set?: SIO;
$unset?: SIO;
}
}
function forwardDiffToModifier(prev: SIO, doc: SIO, fieldsToIgnore?: string[]): Mongo.Modifier
function shouldSet(val: any, prev: any): boolean
function shouldUnset(val: any, prev: any): boolean
function diffToModifier(prev: SIO, doc: SIO, fieldsToIgnore?: string[], pruneEmptyObjects?: boolean): Mongo.Modifier
function modifierToObj(modifier: Mongo.Modifier): SIO
function objToModifier(obj: SIO): Mongo.Modifier
function apply<T>(dest: T, source: Mongo.Modifier): T
function $set(dest: SIO, source: Mongo.Modifier): void
function $addToSet<T>(dest: T[], src: T): T[]
function $unset(dest: Object, source: Mongo.Modifier): void
function update(doc: Mongo.Document, options: Mongo.UpdateOptions): Mongo.Modifier
function mapModifierToKey(modifier: Mongo.Modifier, key: string): Mongo.Modifier
/*
* Check
*/
function check(value: any, type: any): boolean
function isNumeric(n: any): boolean
function isArguments(object: any): boolean
function isEmpty(input: { [index: string]: string }): boolean
function isUndefinedOrNull(value: any): boolean
/*
* Cascade
*/
function cascadeShallow<T>(tree: T, keywords: string[], selectors: string[]): T
function cascade<T>(tree: T, keywords: string[], selectors: string[]): T
function select(input: string[], cssString: string): boolean;
/*
Graph
*/
class Graph<T> {
[index: string]: any;
addNode(node: string, data?: T): void;
removeNode(node: string): void;
hasNode(node: string): boolean;
getNodeData(node: string): any;
setNodeData(node: string, data?: T): void;
addDependency(from: string, to: string): void;
removeDependency(from: string, to: string): void;
dependenciesOf(node: string, leavesOnly: boolean): any[];
dependantsOf(node: string, leavesOnly: boolean): any[];
overallOrder(leavesOnly: boolean): any[];
}
/*
Optionally Linked Hash Maps
*/
class OLHV<T> {
require?: string;
value: T
}
class OLHM<T> {
[index: string]: OLHV<T>;
}
function map<T>(olhm: OLHM<T>, fn: (v: any, k?: string) => T): T[];
function okmap<T>(olhm: OLHM<T>, fn: (v: any, k?: string) => OLHV<T> | T): OLHM<T>;
function parseOLHM(object: any): OLHM<any>;
function safeOLHM<T>(olhm: OLHM<T>): T[];
}
FAQs
_ like library written in typescript using templated generics where reasonable
We found that typed-json-transform demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.