Socket
Socket
Sign inDemoInstall

lil-fp

Package Overview
Dependencies
0
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.1.9 to 1.2.0

dist/chunk-G5PPAI5Y.mjs

2

dist/index.d.ts
export { a as Arr } from './arr-baeb89ce.js';
export { b as Bool } from './bool-38e9ed29.js';
export { done, flow, log, memo, pipe, tap } from './func.js';
export { o as Obj } from './obj-cd6ce7e4.js';
export { o as Obj } from './obj-164f8b14.js';
export { isArr, isBool, isFunc, isNum, isObj, isStr } from './is.js';

@@ -6,0 +6,0 @@ export { alt, match, otherwise, when } from './logic.js';

@@ -105,2 +105,3 @@ "use strict";

compact: () => compact2,
defaults: () => defaults,
entries: () => entries,

@@ -110,2 +111,3 @@ filter: () => filter2,

fromEntries: () => fromEntries,
get: () => get,
keys: () => keys,

@@ -168,3 +170,11 @@ map: () => map2,

[key]: fn(obj[key])
});
}), defaults = (defaults2) => (obj) => cast({
...defaults2,
...obj
}), get = (key, fallback) => (obj) => {
let keys2 = key.split("."), i = 0;
for (; obj[keys2[i]]; )
obj = obj[keys2[i]], i++;
return obj ?? fallback;
};

@@ -171,0 +181,0 @@ // src/logic.ts

import './types.js';
export { b as assign, c as assignTo, n as bind, l as cast, h as clone, g as compact, e as entries, d as filter, a as from, f as fromEntries, k as keys, m as map, i as merge, j as omit, p as pick, s as split } from './obj-cd6ce7e4.js';
export { b as assign, c as assignTo, n as bind, l as cast, h as clone, g as compact, q as defaults, e as entries, d as filter, a as from, f as fromEntries, r as get, k as keys, m as map, i as merge, j as omit, p as pick, s as split } from './obj-164f8b14.js';

@@ -26,2 +26,3 @@ "use strict";

compact: () => compact,
defaults: () => defaults,
entries: () => entries,

@@ -31,2 +32,3 @@ filter: () => filter,

fromEntries: () => fromEntries,
get: () => get,
keys: () => keys,

@@ -90,3 +92,11 @@ map: () => map,

[key]: fn(obj[key])
});
}), defaults = (defaults2) => (obj) => cast({
...defaults2,
...obj
}), get = (key, fallback) => (obj) => {
let keys2 = key.split("."), i = 0;
for (; obj[keys2[i]]; )
obj = obj[keys2[i]], i++;
return obj ?? fallback;
};
// Annotate the CommonJS export names for ESM import in node:

@@ -100,2 +110,3 @@ 0 && (module.exports = {

compact,
defaults,
entries,

@@ -105,2 +116,3 @@ filter,

fromEntries,
get,
keys,

@@ -107,0 +119,0 @@ map,

@@ -22,3 +22,20 @@ type Dict = Record<string, any>;

] ? Simplify<Assign<Rest, Merge<Target, Next>>> : T extends [...infer Rest, infer Next] ? Simplify<Merge<Assign<Rest, Target>, Next>> : T extends [] ? Simplify<Target> : T extends (infer I)[] ? Simplify<Merge<Target, I>> : Simplify<Target>;
type Primitive = null | undefined | string | number | boolean | symbol | bigint;
type ArrayKey = number;
type IsTuple<T extends readonly any[]> = number extends T['length'] ? false : true;
type TupleKeys<T extends readonly any[]> = Exclude<keyof T, keyof any[]>;
type PathConcat<TKey extends string | number, TValue> = TValue extends Primitive ? `${TKey}` : `${TKey}` | `${TKey}.${Path<TValue>}`;
type Path<T> = T extends readonly (infer V)[] ? IsTuple<T> extends true ? {
[K in TupleKeys<T>]-?: PathConcat<K & string, T[K]>;
}[TupleKeys<T>] : PathConcat<ArrayKey, V> : {
[K in keyof T]-?: PathConcat<K & string, T[K]>;
}[keyof T];
type ArrayPathConcat<TKey extends string | number, TValue> = TValue extends Primitive ? never : TValue extends readonly (infer U)[] ? U extends Primitive ? never : `${TKey}` | `${TKey}.${ArrayPath<TValue>}` : `${TKey}.${ArrayPath<TValue>}`;
type ArrayPath<T> = T extends readonly (infer V)[] ? IsTuple<T> extends true ? {
[K in TupleKeys<T>]-?: ArrayPathConcat<K & string, T[K]>;
}[TupleKeys<T>] : ArrayPathConcat<ArrayKey, V> : {
[K in keyof T]-?: ArrayPathConcat<K & string, T[K]>;
}[keyof T];
type PathValue<T, TPath extends Path<T> | ArrayPath<T>> = T extends any ? TPath extends `${infer K}.${infer R}` ? K extends keyof T ? R extends Path<T[K]> ? PathValue<T[K], R> : never : K extends `${ArrayKey}` ? T extends readonly (infer V)[] ? PathValue<V, R & Path<V>> : never : never : TPath extends keyof T ? T[TPath] : TPath extends `${ArrayKey}` ? T extends readonly (infer V)[] ? V : never : never : never;
export { Assign, Awaited, Compact, Dict, PromiseFactory, Simplify, Split, SplitProp };
export { ArrayPath, Assign, Awaited, Compact, Dict, Path, PathConcat, PathValue, Primitive, PromiseFactory, Simplify, Split, SplitProp };
{
"name": "lil-fp",
"version": "1.1.9",
"version": "1.2.0",
"description": "Functional programming utilities for TypeScript",

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

import { isFunc, isObj } from './is'
import { Compact, Dict, Assign, Split, SplitProp, Simplify } from './types'
import {
Assign,
Compact,
Dict,
Path,
Simplify,
Split,
SplitProp,
} from './types'

@@ -136,1 +144,25 @@ export const fromEntries = <T extends Dict>(

})
type Defaults<T extends Dict, K extends Partial<T>> = Simplify<
Omit<T, keyof K> & Required<K>
>
export const defaults =
<T extends Dict, K extends Partial<T>>(defaults: K) =>
(obj: T): Defaults<T, K> =>
cast({
...defaults,
...obj,
})
export const get =
<T extends Dict, K extends Path<T>, V>(key: K, fallback?: V) =>
(obj: T): T[K] | V => {
let keys = key.split('.')
let i = 0
while (obj[keys[i]]) {
obj = obj[keys[i]]
i++
}
return (obj ?? fallback) as any
}

@@ -42,1 +42,74 @@ export type Dict = Record<string, any>

: Simplify<Target>
export type Primitive =
| null
| undefined
| string
| number
| boolean
| symbol
| bigint
type ArrayKey = number
type IsTuple<T extends readonly any[]> = number extends T['length']
? false
: true
type TupleKeys<T extends readonly any[]> = Exclude<keyof T, keyof any[]>
export type PathConcat<
TKey extends string | number,
TValue
> = TValue extends Primitive ? `${TKey}` : `${TKey}` | `${TKey}.${Path<TValue>}`
export type Path<T> = T extends readonly (infer V)[]
? IsTuple<T> extends true
? {
[K in TupleKeys<T>]-?: PathConcat<K & string, T[K]>
}[TupleKeys<T>]
: PathConcat<ArrayKey, V>
: {
[K in keyof T]-?: PathConcat<K & string, T[K]>
}[keyof T]
type ArrayPathConcat<
TKey extends string | number,
TValue
> = TValue extends Primitive
? never
: TValue extends readonly (infer U)[]
? U extends Primitive
? never
: `${TKey}` | `${TKey}.${ArrayPath<TValue>}`
: `${TKey}.${ArrayPath<TValue>}`
export type ArrayPath<T> = T extends readonly (infer V)[]
? IsTuple<T> extends true
? {
[K in TupleKeys<T>]-?: ArrayPathConcat<K & string, T[K]>
}[TupleKeys<T>]
: ArrayPathConcat<ArrayKey, V>
: {
[K in keyof T]-?: ArrayPathConcat<K & string, T[K]>
}[keyof T]
export type PathValue<T, TPath extends Path<T> | ArrayPath<T>> = T extends any
? TPath extends `${infer K}.${infer R}`
? K extends keyof T
? R extends Path<T[K]>
? PathValue<T[K], R>
: never
: K extends `${ArrayKey}`
? T extends readonly (infer V)[]
? PathValue<V, R & Path<V>>
: never
: never
: TPath extends keyof T
? T[TPath]
: TPath extends `${ArrayKey}`
? T extends readonly (infer V)[]
? V
: never
: never
: never

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc