@zelgadis87/utils-core 5.1.2 → 5.1.3

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
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@zelgadis87/utils-core",
4
- "version": "5.1.2",
4
+ "version": "5.1.3",
5
5
  "author": "Zelgadis87",
6
6
  "license": "ISC",
7
7
  "private": false,
@@ -162,3 +162,12 @@ export function sumArrayBy<T>( arr: T[], mapFn: TTransformer<T, number> ): numbe
162
162
  return sum + value;
163
163
  }, 0 );
164
164
  }
165
+
166
+ export function shallowArrayEquals( a: unknown[], b: unknown[] ): boolean {
167
+ if ( a === b ) return true;
168
+ if ( a.length !== b.length ) return false;
169
+ for ( let i = 0; i < a.length; i++ ) {
170
+ if ( a[ i ] !== b[ i ] ) return false;
171
+ }
172
+ return true;
173
+ }
@@ -1,4 +1,4 @@
1
- import { TConsumer, TFunction } from "./functions.js";
1
+ import { TConsumer, TFunction, TProducer, TVoidFunction } from "./functions.js";
2
2
 
3
3
  export type TMaybe<T> = T | null;
4
4
 
@@ -27,7 +27,11 @@ export function mapDefined<R, S>( source: TMaybe<R>, mapper: TFunction<R, S> ):
27
27
  return null;
28
28
  }
29
29
 
30
- export function ifNullOrUndefined( source: TMaybe<unknown>, callback: TConsumer<void> ): void {
30
+ export function ifNullOrUndefined( source: TMaybe<unknown>, callback: TVoidFunction ): void {
31
31
  if ( isNullOrUndefined( source ) )
32
32
  callback();
33
33
  }
34
+
35
+ export function throwIfNullOrUndefined( source: TMaybe<unknown>, errorProducer: TProducer<Error> = () => new Error( `Unexpected ${source} value` ) ): void {
36
+ return ifNullOrUndefined( source, () => { throw errorProducer(); } );
37
+ }
@@ -48,3 +48,13 @@ export type TWithExtras<R extends Record<any, any>, T extends Record<any, any> =
48
48
  * Types that improves the human readability of a Typescript type.
49
49
  */
50
50
  export type TPrettify<T> = { [ K in keyof T ]: T[ K ]; } & {};
51
+
52
+ export function shallowRecordEquals( a: Record<string, unknown>, b: Record<string, unknown> ): boolean {
53
+ if ( a === b ) return true;
54
+ const aKeys = Object.keys( a ), bKeys = Object.keys( b );
55
+ if ( aKeys.length !== bKeys.length ) return false;
56
+ for ( const key of aKeys ) {
57
+ if ( a[ key ] !== b[ key ] ) return false;
58
+ }
59
+ return true;
60
+ }
@@ -1,5 +1,5 @@
1
1
  import { range } from "./arrays.js";
2
- import { ensureDefined, isNullOrUndefined } from "./nulls.js";
2
+ import { ensureDefined, isNullOrUndefined, TMaybe } from "./nulls.js";
3
3
 
4
4
  export * from './strings/StringParts.js';
5
5
 
@@ -81,8 +81,19 @@ export function pluralize( n: number, singular: string, plural?: string ): strin
81
81
 
82
82
  }
83
83
 
84
- export function wrapWithString( str: string, delimiter: string ): string {
85
- return delimiter + str + delimiter;
84
+ export function isNullOrUndefinedOrEmpty( source: TMaybe<string> ): boolean {
85
+ return isNullOrUndefined( source ) || source.length === 0;
86
86
  }
87
87
 
88
88
 
89
+ export default function wrapWithString( str: string, delimiter: string ): string;
90
+ export default function wrapWithString( str: string, start: string, end: string ): string;
91
+ export default function wrapWithString( str: string, start: string, end = start ): string {
92
+ if ( isNullOrUndefinedOrEmpty( str ) )
93
+ throw new Error( `Expected string to be non-empty, got: "${str}"` );
94
+ if ( isNullOrUndefinedOrEmpty( start ) )
95
+ throw new Error( `Expected start delimiter to be non-empty, got: "${start}"` );
96
+ if ( isNullOrUndefinedOrEmpty( end ) )
97
+ throw new Error( `Expected end delimiter to be non-empty, got: "${end}"` );
98
+ return start + str + end;
99
+ }