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.
@@ -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;AAsBH,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;;;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,CAGhE;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"}
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
- const match = versionString.match(SEMANTIC_VERSION_REGEX);
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
- const match = versionString.match(SEMANTIC_VERSION_REGEX);
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.7.1",
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.7.2",
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.0",
38
+ "typescript-eslint": "8.46.2",
39
39
  "unbuild": "3.6.1"
40
40
  }
41
41
  }
@@ -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
  *
@@ -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
- const match = versionString.match(SEMANTIC_VERSION_REGEX);
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). */