@zelgadis87/utils-core 5.1.2 → 5.1.4
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/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/arrays.d.ts +1 -0
- package/dist/utils/nulls.d.ts +3 -2
- package/dist/utils/records.d.ts +1 -0
- package/dist/utils/strings.d.ts +3 -0
- package/esbuild/index.cjs +41 -2
- package/esbuild/index.cjs.map +2 -2
- package/esbuild/index.mjs +37 -2
- package/esbuild/index.mjs.map +2 -2
- package/package.json +1 -1
- package/src/utils/arrays.ts +9 -0
- package/src/utils/nulls.ts +6 -2
- package/src/utils/records.ts +10 -0
- package/src/utils/strings.ts +14 -3
package/package.json
CHANGED
package/src/utils/arrays.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/utils/nulls.ts
CHANGED
|
@@ -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:
|
|
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
|
+
}
|
package/src/utils/records.ts
CHANGED
|
@@ -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
|
+
}
|
package/src/utils/strings.ts
CHANGED
|
@@ -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
|
|
85
|
-
return
|
|
84
|
+
export function isNullOrUndefinedOrEmpty( source: TMaybe<string> ): boolean {
|
|
85
|
+
return isNullOrUndefined( source ) || source.length === 0;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
|
|
89
|
+
export function wrapWithString( str: string, delimiter: string ): string;
|
|
90
|
+
export function wrapWithString( str: string, start: string, end: string ): string;
|
|
91
|
+
export 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
|
+
}
|