complete-common 2.7.1 → 2.9.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/dist/functions/assert.d.cts +2 -0
- package/dist/functions/assert.d.mts +2 -0
- package/dist/functions/assert.d.ts +2 -0
- package/dist/functions/assert.d.ts.map +1 -1
- package/dist/functions/string.d.cts +2 -0
- package/dist/functions/string.d.mts +2 -0
- package/dist/functions/string.d.ts +2 -0
- package/dist/functions/string.d.ts.map +1 -1
- package/dist/index.cjs +12 -2
- package/dist/index.mjs +11 -3
- package/package.json +3 -3
- package/src/functions/assert.ts +12 -0
- package/src/functions/string.ts +9 -2
|
@@ -42,6 +42,8 @@ export declare function assertDefined<T>(value: T, ...[msg]: [undefined] extends
|
|
|
42
42
|
* should be more performant for enums with around 52 or more elements.
|
|
43
43
|
*/
|
|
44
44
|
export declare function assertEnumValue<T extends TranspiledEnum>(value: number | string, transpiledEnum: T, msg: string, set?: ReadonlySet<string | number>): asserts value is T[keyof T];
|
|
45
|
+
/** Helper function to throw an error if the provided value is not an integer. */
|
|
46
|
+
export declare function assertInteger(value: unknown, msg: string): asserts value is number;
|
|
45
47
|
/**
|
|
46
48
|
* Helper function to throw an error if the provided value is not an instance of the expected class.
|
|
47
49
|
*
|
|
@@ -42,6 +42,8 @@ export declare function assertDefined<T>(value: T, ...[msg]: [undefined] extends
|
|
|
42
42
|
* should be more performant for enums with around 52 or more elements.
|
|
43
43
|
*/
|
|
44
44
|
export declare function assertEnumValue<T extends TranspiledEnum>(value: number | string, transpiledEnum: T, msg: string, set?: ReadonlySet<string | number>): asserts value is T[keyof T];
|
|
45
|
+
/** Helper function to throw an error if the provided value is not an integer. */
|
|
46
|
+
export declare function assertInteger(value: unknown, msg: string): asserts value is number;
|
|
45
47
|
/**
|
|
46
48
|
* Helper function to throw an error if the provided value is not an instance of the expected class.
|
|
47
49
|
*
|
|
@@ -42,6 +42,8 @@ export declare function assertDefined<T>(value: T, ...[msg]: [undefined] extends
|
|
|
42
42
|
* should be more performant for enums with around 52 or more elements.
|
|
43
43
|
*/
|
|
44
44
|
export declare function assertEnumValue<T extends TranspiledEnum>(value: number | string, transpiledEnum: T, msg: string, set?: ReadonlySet<string | number>): asserts value is T[keyof T];
|
|
45
|
+
/** Helper function to throw an error if the provided value is not an integer. */
|
|
46
|
+
export declare function assertInteger(value: unknown, msg: string): asserts value is number;
|
|
45
47
|
/**
|
|
46
48
|
* Helper function to throw an error if the provided value is not an instance of the expected class.
|
|
47
49
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/functions/assert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,+EAA+E;AAC/E,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAI5B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAM5B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAM5B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAM5B;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,CAI1B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAC7B,CAAC,MAAM,CAAC,GACR;IACE,iFAAiF;CAClF,GACJ,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAIxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,EACtD,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,cAAc,EAAE,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAI7B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAEtD,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,CAAC,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAIlC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GACxB,CAAC,MAAM,CAAC,GACR;IACE,4EAA4E;CAC7E,GACJ,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAInC;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAIzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI1C;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAIzB"}
|
|
1
|
+
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/functions/assert.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,+EAA+E;AAC/E,wBAAgB,WAAW,CACzB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAI5B;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAM5B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAM5B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,EAAE,CAM5B;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,OAAO,CAI1B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,GAC7B,CAAC,MAAM,CAAC,GACR;IACE,iFAAiF;CAClF,GACJ,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAIxC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,cAAc,EACtD,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,cAAc,EAAE,CAAC,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,GACjC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAI7B;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAMzB;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,CAAC,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAEtD,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,CAAC,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC,CAAC,CAAC,CAIlC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EACR,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GACxB,CAAC,MAAM,CAAC,GACR;IACE,4EAA4E;CAC7E,GACJ,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAInC;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAIzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI1C;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,IAAI,MAAM,CAIzB"}
|
|
@@ -28,6 +28,8 @@ export declare function hasDiacritic(string: string): boolean;
|
|
|
28
28
|
export declare function hasEmoji(string: string): boolean;
|
|
29
29
|
/** From: https://stackoverflow.com/questions/1731190/check-if-a-string-has-white-space */
|
|
30
30
|
export declare function hasWhitespace(string: string): boolean;
|
|
31
|
+
/** Helper function to determine if a string only contains ASCII characters. */
|
|
32
|
+
export declare function isASCII(str: string): boolean;
|
|
31
33
|
/**
|
|
32
34
|
* From:
|
|
33
35
|
* https://stackoverflow.com/questions/8334606/check-if-first-letter-of-word-is-a-capital-letter
|
|
@@ -28,6 +28,8 @@ export declare function hasDiacritic(string: string): boolean;
|
|
|
28
28
|
export declare function hasEmoji(string: string): boolean;
|
|
29
29
|
/** From: https://stackoverflow.com/questions/1731190/check-if-a-string-has-white-space */
|
|
30
30
|
export declare function hasWhitespace(string: string): boolean;
|
|
31
|
+
/** Helper function to determine if a string only contains ASCII characters. */
|
|
32
|
+
export declare function isASCII(str: string): boolean;
|
|
31
33
|
/**
|
|
32
34
|
* From:
|
|
33
35
|
* https://stackoverflow.com/questions/8334606/check-if-first-letter-of-word-is-a-capital-letter
|
|
@@ -28,6 +28,8 @@ export declare function hasDiacritic(string: string): boolean;
|
|
|
28
28
|
export declare function hasEmoji(string: string): boolean;
|
|
29
29
|
/** From: https://stackoverflow.com/questions/1731190/check-if-a-string-has-white-space */
|
|
30
30
|
export declare function hasWhitespace(string: string): boolean;
|
|
31
|
+
/** Helper function to determine if a string only contains ASCII characters. */
|
|
32
|
+
export declare function isASCII(str: string): boolean;
|
|
31
33
|
/**
|
|
32
34
|
* From:
|
|
33
35
|
* https://stackoverflow.com/questions/8334606/check-if-first-letter-of-word-is-a-capital-letter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/functions/string.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../src/functions/string.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyBH,kEAAkE;AAClE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAqBlE;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOpD;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GACtD;IACE,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IAErB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IAErB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;CACtB,GACD,SAAS,CAwBZ;AAGD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,MAAM,CAuBR;AAED,gGAAgG;AAChG,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,UAAQ,GACd,MAAM,CAWR;AAED,gGAAgG;AAChG,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAMxE"}
|
package/dist/index.cjs
CHANGED
|
@@ -74,6 +74,11 @@ function assertEnumValue(value, transpiledEnum, msg, set) {
|
|
|
74
74
|
throw new TypeError(msg);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
+
function assertInteger(value, msg) {
|
|
78
|
+
if (!Number.isInteger(value)) {
|
|
79
|
+
throw new TypeError(msg);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
77
82
|
function assertIs(value, constructor, msg) {
|
|
78
83
|
if (!(value instanceof constructor)) {
|
|
79
84
|
throw new TypeError(msg);
|
|
@@ -399,6 +404,7 @@ function repeat(num, func) {
|
|
|
399
404
|
function todo(...args) {
|
|
400
405
|
}
|
|
401
406
|
|
|
407
|
+
const ASCII_REGEX = /^[\u0000-\u007F]*$/;
|
|
402
408
|
const DIACRITIC_REGEX = /\p{Diacritic}/u;
|
|
403
409
|
const EMOJI_REGEX = /(\p{Extended_Pictographic}|[#*0-9]\uFE0F?\u20E3)/u;
|
|
404
410
|
const FIRST_LETTER_CAPITALIZED_REGEX = /^\p{Lu}/u;
|
|
@@ -445,6 +451,9 @@ function hasEmoji(string) {
|
|
|
445
451
|
function hasWhitespace(string) {
|
|
446
452
|
return WHITESPACE_REGEX.test(string);
|
|
447
453
|
}
|
|
454
|
+
function isASCII(str) {
|
|
455
|
+
return ASCII_REGEX.test(str);
|
|
456
|
+
}
|
|
448
457
|
function isFirstLetterCapitalized(string) {
|
|
449
458
|
return FIRST_LETTER_CAPITALIZED_REGEX.test(string);
|
|
450
459
|
}
|
|
@@ -455,8 +464,7 @@ function isLowerCase(string) {
|
|
|
455
464
|
return LOWERCASE_REGEX.test(string);
|
|
456
465
|
}
|
|
457
466
|
function isSemanticVersion(versionString) {
|
|
458
|
-
|
|
459
|
-
return match !== null;
|
|
467
|
+
return SEMANTIC_VERSION_REGEX.test(versionString);
|
|
460
468
|
}
|
|
461
469
|
function isUpperCase(string) {
|
|
462
470
|
return UPPERCASE_REGEX.test(string);
|
|
@@ -586,6 +594,7 @@ exports.assertArrayString = assertArrayString;
|
|
|
586
594
|
exports.assertBoolean = assertBoolean;
|
|
587
595
|
exports.assertDefined = assertDefined;
|
|
588
596
|
exports.assertEnumValue = assertEnumValue;
|
|
597
|
+
exports.assertInteger = assertInteger;
|
|
589
598
|
exports.assertIs = assertIs;
|
|
590
599
|
exports.assertNotNull = assertNotNull;
|
|
591
600
|
exports.assertNumber = assertNumber;
|
|
@@ -614,6 +623,7 @@ exports.iRange = iRange;
|
|
|
614
623
|
exports.includes = includes;
|
|
615
624
|
exports.includesAny = includesAny;
|
|
616
625
|
exports.interfaceSatisfiesEnum = interfaceSatisfiesEnum;
|
|
626
|
+
exports.isASCII = isASCII;
|
|
617
627
|
exports.isArray = isArray;
|
|
618
628
|
exports.isArrayBoolean = isArrayBoolean;
|
|
619
629
|
exports.isArrayNumber = isArrayNumber;
|
package/dist/index.mjs
CHANGED
|
@@ -72,6 +72,11 @@ function assertEnumValue(value, transpiledEnum, msg, set) {
|
|
|
72
72
|
throw new TypeError(msg);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
+
function assertInteger(value, msg) {
|
|
76
|
+
if (!Number.isInteger(value)) {
|
|
77
|
+
throw new TypeError(msg);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
75
80
|
function assertIs(value, constructor, msg) {
|
|
76
81
|
if (!(value instanceof constructor)) {
|
|
77
82
|
throw new TypeError(msg);
|
|
@@ -397,6 +402,7 @@ function repeat(num, func) {
|
|
|
397
402
|
function todo(...args) {
|
|
398
403
|
}
|
|
399
404
|
|
|
405
|
+
const ASCII_REGEX = /^[\u0000-\u007F]*$/;
|
|
400
406
|
const DIACRITIC_REGEX = /\p{Diacritic}/u;
|
|
401
407
|
const EMOJI_REGEX = /(\p{Extended_Pictographic}|[#*0-9]\uFE0F?\u20E3)/u;
|
|
402
408
|
const FIRST_LETTER_CAPITALIZED_REGEX = /^\p{Lu}/u;
|
|
@@ -443,6 +449,9 @@ function hasEmoji(string) {
|
|
|
443
449
|
function hasWhitespace(string) {
|
|
444
450
|
return WHITESPACE_REGEX.test(string);
|
|
445
451
|
}
|
|
452
|
+
function isASCII(str) {
|
|
453
|
+
return ASCII_REGEX.test(str);
|
|
454
|
+
}
|
|
446
455
|
function isFirstLetterCapitalized(string) {
|
|
447
456
|
return FIRST_LETTER_CAPITALIZED_REGEX.test(string);
|
|
448
457
|
}
|
|
@@ -453,8 +462,7 @@ function isLowerCase(string) {
|
|
|
453
462
|
return LOWERCASE_REGEX.test(string);
|
|
454
463
|
}
|
|
455
464
|
function isSemanticVersion(versionString) {
|
|
456
|
-
|
|
457
|
-
return match !== null;
|
|
465
|
+
return SEMANTIC_VERSION_REGEX.test(versionString);
|
|
458
466
|
}
|
|
459
467
|
function isUpperCase(string) {
|
|
460
468
|
return UPPERCASE_REGEX.test(string);
|
|
@@ -566,4 +574,4 @@ function* tupleKeys(tuple) {
|
|
|
566
574
|
|
|
567
575
|
const ReadonlyMap = Map;
|
|
568
576
|
|
|
569
|
-
export { HOUR_IN_MILLISECONDS, MINUTE_IN_MILLISECONDS, ReadonlyMap, ReadonlySet, SECOND_IN_MILLISECONDS, addSetsToSet, arrayCopyTwoDimensional, arrayEquals, arrayRemove, arrayRemoveAllInPlace, arrayRemoveInPlace, assertArray, assertArrayBoolean, assertArrayNumber, assertArrayString, assertBoolean, assertDefined, assertEnumValue, assertIs, assertNotNull, assertNumber, assertObject, assertString, capitalizeFirstLetter, clamp, combineSets, copySet, eRange, emptyArray, escapeHTMLCharacters, filterMap, getElapsedSeconds, getEnumEntries, getEnumKeys, getEnumValues, getNumConsecutiveDiacritics, getRandomArrayElement, getRandomArrayIndex, getRandomInt, hasDiacritic, hasEmoji, hasWhitespace, iRange, includes, includesAny, interfaceSatisfiesEnum, isArray, isArrayBoolean, isArrayNumber, isArrayString, isEnumValue, isFirstLetterCapitalized, isKebabCase, isKeyOf, isLowerCase, isObject, isSemanticVersion, isUpperCase, kebabCaseToCamelCase, kebabCaseToPascalCase, mapFilter, mapFind, newArray, noop, normalizeString, objectFilter, objectKeysToSet, objectToMap, objectToReverseMap, objectValuesToSet, parseFloatSafe, parseIntSafe, parseSemanticVersion, removeLinesBetweenMarkers, removeLinesMatching, removeNonPrintableCharacters, removeWhitespace, repeat, setAdd, setHas, sortCaseInsensitive, sumArray, todo, trimPrefix, trimSuffix, truncateString, tupleEntries, tupleKeys };
|
|
577
|
+
export { HOUR_IN_MILLISECONDS, MINUTE_IN_MILLISECONDS, ReadonlyMap, ReadonlySet, SECOND_IN_MILLISECONDS, addSetsToSet, arrayCopyTwoDimensional, arrayEquals, arrayRemove, arrayRemoveAllInPlace, arrayRemoveInPlace, assertArray, assertArrayBoolean, assertArrayNumber, assertArrayString, assertBoolean, assertDefined, assertEnumValue, assertInteger, assertIs, assertNotNull, assertNumber, assertObject, assertString, capitalizeFirstLetter, clamp, combineSets, copySet, eRange, emptyArray, escapeHTMLCharacters, filterMap, getElapsedSeconds, getEnumEntries, getEnumKeys, getEnumValues, getNumConsecutiveDiacritics, getRandomArrayElement, getRandomArrayIndex, getRandomInt, hasDiacritic, hasEmoji, hasWhitespace, iRange, includes, includesAny, interfaceSatisfiesEnum, isASCII, isArray, isArrayBoolean, isArrayNumber, isArrayString, isEnumValue, isFirstLetterCapitalized, isKebabCase, isKeyOf, isLowerCase, isObject, isSemanticVersion, isUpperCase, kebabCaseToCamelCase, kebabCaseToPascalCase, mapFilter, mapFind, newArray, noop, normalizeString, objectFilter, objectKeysToSet, objectToMap, objectToReverseMap, objectValuesToSet, parseFloatSafe, parseIntSafe, parseSemanticVersion, removeLinesBetweenMarkers, removeLinesMatching, removeNonPrintableCharacters, removeWhitespace, repeat, setAdd, setHas, sortCaseInsensitive, sumArray, todo, trimPrefix, trimSuffix, truncateString, tupleEntries, tupleKeys };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "complete-common",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.9.0",
|
|
4
4
|
"description": "Helper functions for TypeScript projects.",
|
|
5
5
|
"homepage": "https://complete-ts.github.io/",
|
|
6
6
|
"bugs": {
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"test": "tsx --test"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@types/node": "24.
|
|
34
|
+
"@types/node": "24.9.1",
|
|
35
35
|
"complete-node": "12.2.1",
|
|
36
36
|
"eslint-plugin-sort-exports": "0.9.1",
|
|
37
37
|
"typescript": "5.9.3",
|
|
38
|
-
"typescript-eslint": "8.46.
|
|
38
|
+
"typescript-eslint": "8.46.2",
|
|
39
39
|
"unbuild": "3.6.1"
|
|
40
40
|
}
|
|
41
41
|
}
|
package/src/functions/assert.ts
CHANGED
|
@@ -112,6 +112,18 @@ export function assertEnumValue<T extends TranspiledEnum>(
|
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
/** Helper function to throw an error if the provided value is not an integer. */
|
|
116
|
+
export function assertInteger(
|
|
117
|
+
value: unknown,
|
|
118
|
+
msg: string,
|
|
119
|
+
): asserts value is number {
|
|
120
|
+
// `Number.isInteger` will correctly return false for non-number variables such as strings,
|
|
121
|
+
// booleans, and so on.
|
|
122
|
+
if (!Number.isInteger(value)) {
|
|
123
|
+
throw new TypeError(msg);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
115
127
|
/**
|
|
116
128
|
* Helper function to throw an error if the provided value is not an instance of the expected class.
|
|
117
129
|
*
|
package/src/functions/string.ts
CHANGED
|
@@ -9,6 +9,9 @@ import { parseIntSafe } from "./utils.js";
|
|
|
9
9
|
// When regular expressions are located at the root instead of inside the function, the functions
|
|
10
10
|
// are tested to perform 11% faster.
|
|
11
11
|
|
|
12
|
+
// eslint-disable-next-line no-control-regex
|
|
13
|
+
const ASCII_REGEX = /^[\u0000-\u007F]*$/;
|
|
14
|
+
|
|
12
15
|
const DIACRITIC_REGEX = /\p{Diacritic}/u;
|
|
13
16
|
|
|
14
17
|
/**
|
|
@@ -104,6 +107,11 @@ export function hasWhitespace(string: string): boolean {
|
|
|
104
107
|
return WHITESPACE_REGEX.test(string);
|
|
105
108
|
}
|
|
106
109
|
|
|
110
|
+
/** Helper function to determine if a string only contains ASCII characters. */
|
|
111
|
+
export function isASCII(str: string): boolean {
|
|
112
|
+
return ASCII_REGEX.test(str);
|
|
113
|
+
}
|
|
114
|
+
|
|
107
115
|
/**
|
|
108
116
|
* From:
|
|
109
117
|
* https://stackoverflow.com/questions/8334606/check-if-first-letter-of-word-is-a-capital-letter
|
|
@@ -132,8 +140,7 @@ export function isLowerCase(string: string): boolean {
|
|
|
132
140
|
* @see https://semver.org/
|
|
133
141
|
*/
|
|
134
142
|
export function isSemanticVersion(versionString: string): boolean {
|
|
135
|
-
|
|
136
|
-
return match !== null;
|
|
143
|
+
return SEMANTIC_VERSION_REGEX.test(versionString);
|
|
137
144
|
}
|
|
138
145
|
|
|
139
146
|
/** Helper function to test if a string contains only uppercase ASCII letters (A through Z). */
|