@stacksjs/objects 0.59.11 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/objects",
3
3
  "type": "module",
4
- "version": "0.59.11",
4
+ "version": "0.61.0",
5
5
  "description": "The Stacks objects.",
6
6
  "author": "Chris Breuer",
7
7
  "license": "MIT",
package/src/index.ts CHANGED
@@ -29,7 +29,10 @@ import { isObject } from '@stacksjs/validation'
29
29
  * // { b: 2 }
30
30
  * ```
31
31
  */
32
- export function objectMap<K extends string, V, NK = K, NV = V>(obj: Record<K, V>, fn: (key: K, value: V) => [NK, NV] | undefined): Record<K, V> {
32
+ export function objectMap<K extends string, V, NK = K, NV = V>(
33
+ obj: Record<K, V>,
34
+ fn: (key: K, value: V) => [NK, NV] | undefined,
35
+ ): Record<K, V> {
33
36
  return Object.fromEntries(
34
37
  Object.entries(obj)
35
38
  .map(([k, v]) => fn(k as K, v as V))
@@ -72,13 +75,14 @@ export function objectEntries<T extends object>(obj: T) {
72
75
  *
73
76
  * @category Object
74
77
  */
75
- export function deepMerge<T extends object = object, S extends object = T>(target: T, ...sources: S[]): DeepMerge<T, S> {
76
- if (!sources.length)
77
- return target as any
78
+ export function deepMerge<T extends object = object, S extends object = T>(
79
+ target: T,
80
+ ...sources: S[]
81
+ ): DeepMerge<T, S> {
82
+ if (!sources.length) return target as any
78
83
 
79
84
  const source = sources.shift()
80
- if (source === undefined)
81
- return target as any
85
+ if (source === undefined) return target as any
82
86
 
83
87
  if (isMergeableObject(target) && isMergeableObject(source)) {
84
88
  objectKeys(source).forEach((key) => {
@@ -86,13 +90,12 @@ export function deepMerge<T extends object = object, S extends object = T>(targe
86
90
  if (isMergeableObject(source[key])) {
87
91
  // @ts-expect-error some description
88
92
  if (!target[key])
89
- // @ts-expect-error some description
93
+ // @ts-expect-error some description
90
94
  target[key] = {}
91
95
 
92
96
  // @ts-expect-error some description
93
97
  deepMerge(target[key], source[key])
94
- }
95
- else {
98
+ } else {
96
99
  // @ts-expect-error some description
97
100
  target[key] = source[key]
98
101
  }
@@ -112,13 +115,15 @@ function isMergeableObject(item: any): item is object {
112
115
  * @category Object
113
116
  */
114
117
  export function objectPick<O extends object, T extends keyof O>(obj: O, keys: T[], omitUndefined = false) {
115
- return keys.reduce((n, k) => {
116
- if (k in obj) {
117
- if (!omitUndefined || obj[k] !== undefined)
118
- n[k] = obj[k]
119
- }
120
- return n
121
- }, {} as Pick<O, T>)
118
+ return keys.reduce(
119
+ (n, k) => {
120
+ if (k in obj) {
121
+ if (!omitUndefined || obj[k] !== undefined) n[k] = obj[k]
122
+ }
123
+ return n
124
+ },
125
+ {} as Pick<O, T>,
126
+ )
122
127
  }
123
128
 
124
129
  /**
@@ -127,7 +132,6 @@ export function objectPick<O extends object, T extends keyof O>(obj: O, keys: T[
127
132
  * @category Object
128
133
  */
129
134
  export function clearUndefined<T extends object>(obj: T): T {
130
- // @ts-expect-error some description
131
135
  Object.keys(obj).forEach((key: string) => (obj[key] === undefined ? delete obj[key] : {}))
132
136
  return obj
133
137
  }
@@ -135,11 +139,8 @@ export function clearUndefined<T extends object>(obj: T): T {
135
139
  /**
136
140
  * Determines whether an object has a property with the specified name
137
141
  *
138
- * @see https://eslint.org/docs/rules/no-prototype-builtins
139
142
  * @category Object
140
143
  */
141
144
  export function hasOwnProperty<T>(obj: T, v: PropertyKey) {
142
- return obj == null
143
- ? false
144
- : Object.prototype.hasOwnProperty.call(obj, v)
145
+ return obj == null ? false : Object.prototype.hasOwnProperty.call(obj, v)
145
146
  }
package/dist/index.d.ts DELETED
@@ -1,75 +0,0 @@
1
- import type { DeepMerge } from '@stacksjs/types';
2
- /**
3
- * Map key/value pairs for an object, and construct a new one
4
- *
5
- *
6
- * @category Object
7
- *
8
- * Transform:
9
- * @example
10
- * ```
11
- * objectMap({ a: 1, b: 2 }, (k, v) => [k.toString().toUpperCase(), v.toString()])
12
- * // { A: '1', B: '2' }
13
- * ```
14
- *
15
- * Swap key/value:
16
- * @example
17
- * ```
18
- * objectMap({ a: 1, b: 2 }, (k, v) => [v, k])
19
- * // { 1: 'a', 2: 'b' }
20
- * ```
21
- *
22
- * Filter keys:
23
- * @example
24
- * ```
25
- * objectMap({ a: 1, b: 2 }, (k, v) => k === 'a' ? undefined : [k, v])
26
- * // { b: 2 }
27
- * ```
28
- */
29
- export declare function objectMap<K extends string, V, NK = K, NV = V>(obj: Record<K, V>, fn: (key: K, value: V) => [NK, NV] | undefined): Record<K, V>;
30
- /**
31
- * Type guard for any key, `k`.
32
- * Marks `k` as a key of `T` if `k` is in `obj`.
33
- *
34
- * @category Object
35
- * @param obj object to query for key `k`
36
- * @param k key to check existence in `obj`
37
- */
38
- export declare function isKeyOf<T extends object>(obj: T, k: keyof any): k is keyof T;
39
- /**
40
- * Strict typed `Object.keys`
41
- *
42
- * @category Object
43
- */
44
- export declare function objectKeys<T extends object>(obj: T): (`${keyof T & undefined}` | `${keyof T & null}` | `${keyof T & string}` | `${keyof T & number}` | `${keyof T & false}` | `${keyof T & true}`)[];
45
- /**
46
- * Strict typed `Object.entries`
47
- *
48
- * @category Object
49
- */
50
- export declare function objectEntries<T extends object>(obj: T): [keyof T, T[keyof T]][];
51
- /**
52
- * Deep merge :P
53
- *
54
- * @category Object
55
- */
56
- export declare function deepMerge<T extends object = object, S extends object = T>(target: T, ...sources: S[]): DeepMerge<T, S>;
57
- /**
58
- * Create a new subset object by providing keys.
59
- *
60
- * @category Object
61
- */
62
- export declare function objectPick<O extends object, T extends keyof O>(obj: O, keys: T[], omitUndefined?: boolean): Pick<O, T>;
63
- /**
64
- * Clear undefined fields from an object. It mutates the object.
65
- *
66
- * @category Object
67
- */
68
- export declare function clearUndefined<T extends object>(obj: T): T;
69
- /**
70
- * Determines whether an object has a property with the specified name
71
- *
72
- * @see https://eslint.org/docs/rules/no-prototype-builtins
73
- * @category Object
74
- */
75
- export declare function hasOwnProperty<T>(obj: T, v: PropertyKey): boolean;