@tspro/ts-utils-lib 3.1.0 → 3.2.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/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * TsUtilsLib v3.1.0 (esm)
2
+ * TsUtilsLib v3.2.0 (esm)
3
3
  * (c) 2023-2025 PahkaSoft
4
4
  * Licensed under the MIT License
5
5
  */
@@ -114,7 +114,10 @@ __export(str_exports, {
114
114
  splitByChars: () => splitByChars,
115
115
  splitByStrings: () => splitByStrings,
116
116
  stringify: () => stringify,
117
- toCharArray: () => toCharArray
117
+ toCharArray: () => toCharArray,
118
+ trim: () => trim,
119
+ trimEnd: () => trimEnd,
120
+ trimStart: () => trimStart
118
121
  });
119
122
 
120
123
  // src/utils/obj/index.ts
@@ -697,6 +700,42 @@ function splitByStrings(str2, ...splitters) {
697
700
  function splitByChars(str2, splitters) {
698
701
  return splitByStrings(str2, ...splitters.split(""));
699
702
  }
703
+ function trimStart(str2, ...chars) {
704
+ if (chars.length === 0) return str2.trimStart();
705
+ const sorted = [...chars].sort((a, b) => b.length - a.length);
706
+ let changed = true;
707
+ while (changed) {
708
+ changed = false;
709
+ for (const c of sorted) {
710
+ if (str2.startsWith(c)) {
711
+ str2 = str2.slice(c.length);
712
+ changed = true;
713
+ break;
714
+ }
715
+ }
716
+ }
717
+ return str2;
718
+ }
719
+ function trimEnd(str2, ...chars) {
720
+ if (chars.length === 0) return str2.trimEnd();
721
+ const sorted = [...chars].sort((a, b) => b.length - a.length);
722
+ let changed = true;
723
+ while (changed) {
724
+ changed = false;
725
+ for (const c of sorted) {
726
+ if (str2.endsWith(c)) {
727
+ str2 = str2.slice(0, -c.length);
728
+ changed = true;
729
+ break;
730
+ }
731
+ }
732
+ }
733
+ return str2;
734
+ }
735
+ function trim(str2, ...chars) {
736
+ if (chars.length === 0) return str2.trim();
737
+ return trimEnd(trimStart(str2, ...chars), ...chars);
738
+ }
700
739
 
701
740
  // src/assert/index.ts
702
741
  var fmt = stringify;
@@ -4397,14 +4436,19 @@ var _CallTracker = class _CallTracker {
4397
4436
  constructor() {
4398
4437
  __publicField(this, "counts", new UniMap((a, b) => a === b));
4399
4438
  }
4439
+ track(value) {
4440
+ const count = this.counts.getOrCreate(value, 0);
4441
+ this.counts.set(value, count + 1);
4442
+ }
4400
4443
  getCallCountFor(value) {
4401
- let oldCount = this.counts.getOrCreate(value, 0);
4402
- this.counts.set(value, oldCount + 1);
4403
- return oldCount;
4444
+ return this.counts.get(value) ?? 0;
4404
4445
  }
4405
4446
  hasBeenCalledWith(value) {
4406
4447
  return this.getCallCountFor(value) > 0;
4407
4448
  }
4449
+ static track(value) {
4450
+ this._default.track(value);
4451
+ }
4408
4452
  static getCallCountFor(value) {
4409
4453
  return this._default.getCallCountFor(value);
4410
4454
  }
@@ -4412,13 +4456,15 @@ var _CallTracker = class _CallTracker {
4412
4456
  return this._default.hasBeenCalledWith(value);
4413
4457
  }
4414
4458
  };
4415
- // Static default interface
4459
+ // ─────────────────────────────────────────
4460
+ // Static default tracker
4461
+ // ─────────────────────────────────────────
4416
4462
  __publicField(_CallTracker, "_default", new _CallTracker());
4417
4463
  var CallTracker = _CallTracker;
4418
4464
 
4419
4465
  // src/index.ts
4420
4466
  function getLibInfo() {
4421
- return "TsUtilsLib v3.1.0 (esm)";
4467
+ return "TsUtilsLib v3.2.0 (esm)";
4422
4468
  }
4423
4469
 
4424
4470
  export { AnchoredRect, assert_exports as Assert, BaseContainer, BiMap, CallTracker, cookies_exports as Cookies, DefaultArray, DefaultEqualityFn, device_exports as Device, guard_exports as Guard, IndexArray, LRUCache, LinkedList, MultiContainer, Rect, SignedIndexArray, Stack, TriMap, UniMap, utils_exports as Utils, ValueSet, Vec, asMulti, getLibInfo };