@gateweb/react-utils 1.8.0 → 1.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.
@@ -301,8 +301,28 @@ declare const formatAmount: (num: number) => string;
301
301
  * @example
302
302
  *
303
303
  * formatString('123456', 1, 4) // '1****6'
304
+ *
305
+ * @deprecated use `maskString` instead
304
306
  */
305
307
  declare const formatStarMask: (str: string, n: number, m: number) => string;
308
+ /**
309
+ * 將字串的指定位置的以後的字元轉換成星號
310
+ *
311
+ * @param str 字串
312
+ * @param start 起始位置 (從 0 開始計算)
313
+ * @param length 可選,從起始位置開始要遮罩的字元數量,默認為剩餘所有字元
314
+ *
315
+ * @example
316
+ *
317
+ * ```js
318
+ * maskString('123456789', 2) // '12*******'
319
+ * maskString('123456789', 2, 5) // '12*****89'
320
+ * maskString('123456789', 0, 15) // '*********'
321
+ * maskString('123456789', 10) // '123456789' (start out of bounds)
322
+ * maskString('123456789', -1) // '123456789' (start out of bounds)
323
+ * ```
324
+ */
325
+ declare const maskString: (str: string, start: number, length?: number) => string;
306
326
  /**
307
327
  * format file size to human readable string
308
328
  *
@@ -1060,4 +1080,4 @@ declare const getLocalStorage: <T>(key: string, deCode?: boolean) => T | undefin
1060
1080
  */
1061
1081
  declare const setLocalStorage: (key: string, value: Record<string, any>, enCode?: boolean) => void;
1062
1082
 
1063
- export { ByteSize, type PartialBy, QueryProvider, type RequiredBy, type TCountdownActions, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createEnumLikeObject, debounce, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, mergeRefs, objectToSearchParams, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
1083
+ export { ByteSize, type PartialBy, QueryProvider, type RequiredBy, type TCountdownActions, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createEnumLikeObject, debounce, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeRefs, objectToSearchParams, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
package/dist/cjs/index.js CHANGED
@@ -762,7 +762,31 @@ const transformObjectKey = (obj, transformFunName)=>{
762
762
  * @example
763
763
  *
764
764
  * formatString('123456', 1, 4) // '1****6'
765
+ *
766
+ * @deprecated use `maskString` instead
765
767
  */ const formatStarMask = (str, n, m)=>str.slice(0, n) + '*'.repeat(m - n + 1) + str.slice(m + 1);
768
+ /**
769
+ * 將字串的指定位置的以後的字元轉換成星號
770
+ *
771
+ * @param str 字串
772
+ * @param start 起始位置 (從 0 開始計算)
773
+ * @param length 可選,從起始位置開始要遮罩的字元數量,默認為剩餘所有字元
774
+ *
775
+ * @example
776
+ *
777
+ * ```js
778
+ * maskString('123456789', 2) // '12*******'
779
+ * maskString('123456789', 2, 5) // '12*****89'
780
+ * maskString('123456789', 0, 15) // '*********'
781
+ * maskString('123456789', 10) // '123456789' (start out of bounds)
782
+ * maskString('123456789', -1) // '123456789' (start out of bounds)
783
+ * ```
784
+ */ const maskString = (str, start, length)=>{
785
+ if (start < 0 || start >= str.length) return str;
786
+ const maxMaskLength = str.length - start;
787
+ const safeLength = length !== undefined ? Math.max(0, Math.min(length, maxMaskLength)) : maxMaskLength;
788
+ return str.slice(0, start) + '*'.repeat(safeLength) + str.slice(start + safeLength);
789
+ };
766
790
  const FILE_SIZE_UNITS = [
767
791
  'Bytes',
768
792
  'KB',
@@ -1199,6 +1223,7 @@ exports.isTWMobile = isTWMobile;
1199
1223
  exports.isTWPhone = isTWPhone;
1200
1224
  exports.isTimeString = isTimeString;
1201
1225
  exports.isValidPassword = isValidPassword;
1226
+ exports.maskString = maskString;
1202
1227
  exports.mergeRefs = mergeRefs;
1203
1228
  exports.objectToSearchParams = objectToSearchParams;
1204
1229
  exports.omit = omit;
@@ -301,8 +301,28 @@ declare const formatAmount: (num: number) => string;
301
301
  * @example
302
302
  *
303
303
  * formatString('123456', 1, 4) // '1****6'
304
+ *
305
+ * @deprecated use `maskString` instead
304
306
  */
305
307
  declare const formatStarMask: (str: string, n: number, m: number) => string;
308
+ /**
309
+ * 將字串的指定位置的以後的字元轉換成星號
310
+ *
311
+ * @param str 字串
312
+ * @param start 起始位置 (從 0 開始計算)
313
+ * @param length 可選,從起始位置開始要遮罩的字元數量,默認為剩餘所有字元
314
+ *
315
+ * @example
316
+ *
317
+ * ```js
318
+ * maskString('123456789', 2) // '12*******'
319
+ * maskString('123456789', 2, 5) // '12*****89'
320
+ * maskString('123456789', 0, 15) // '*********'
321
+ * maskString('123456789', 10) // '123456789' (start out of bounds)
322
+ * maskString('123456789', -1) // '123456789' (start out of bounds)
323
+ * ```
324
+ */
325
+ declare const maskString: (str: string, start: number, length?: number) => string;
306
326
  /**
307
327
  * format file size to human readable string
308
328
  *
@@ -1060,4 +1080,4 @@ declare const getLocalStorage: <T>(key: string, deCode?: boolean) => T | undefin
1060
1080
  */
1061
1081
  declare const setLocalStorage: (key: string, value: Record<string, any>, enCode?: boolean) => void;
1062
1082
 
1063
- export { ByteSize, type PartialBy, QueryProvider, type RequiredBy, type TCountdownActions, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createEnumLikeObject, debounce, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, mergeRefs, objectToSearchParams, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
1083
+ export { ByteSize, type PartialBy, QueryProvider, type RequiredBy, type TCountdownActions, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createEnumLikeObject, debounce, deepMerge, downloadFile, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeRefs, objectToSearchParams, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, rocEraToAd, searchParamsToObject, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, useQueryContext, useValue, validTaxId, validateDateString, validateFileType, wait };
package/dist/es/index.mjs CHANGED
@@ -756,7 +756,31 @@ const transformObjectKey = (obj, transformFunName)=>{
756
756
  * @example
757
757
  *
758
758
  * formatString('123456', 1, 4) // '1****6'
759
+ *
760
+ * @deprecated use `maskString` instead
759
761
  */ const formatStarMask = (str, n, m)=>str.slice(0, n) + '*'.repeat(m - n + 1) + str.slice(m + 1);
762
+ /**
763
+ * 將字串的指定位置的以後的字元轉換成星號
764
+ *
765
+ * @param str 字串
766
+ * @param start 起始位置 (從 0 開始計算)
767
+ * @param length 可選,從起始位置開始要遮罩的字元數量,默認為剩餘所有字元
768
+ *
769
+ * @example
770
+ *
771
+ * ```js
772
+ * maskString('123456789', 2) // '12*******'
773
+ * maskString('123456789', 2, 5) // '12*****89'
774
+ * maskString('123456789', 0, 15) // '*********'
775
+ * maskString('123456789', 10) // '123456789' (start out of bounds)
776
+ * maskString('123456789', -1) // '123456789' (start out of bounds)
777
+ * ```
778
+ */ const maskString = (str, start, length)=>{
779
+ if (start < 0 || start >= str.length) return str;
780
+ const maxMaskLength = str.length - start;
781
+ const safeLength = length !== undefined ? Math.max(0, Math.min(length, maxMaskLength)) : maxMaskLength;
782
+ return str.slice(0, start) + '*'.repeat(safeLength) + str.slice(start + safeLength);
783
+ };
760
784
  const FILE_SIZE_UNITS = [
761
785
  'Bytes',
762
786
  'KB',
@@ -1152,4 +1176,4 @@ function mergeRefs(refs) {
1152
1176
  return dayjs(endMonth, 'YYYYMM').subtract(1911, 'year').format('YYYYMM').substring(1);
1153
1177
  };
1154
1178
 
1155
- export { ByteSize, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createEnumLikeObject, debounce, deepMerge, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, mergeRefs, objectToSearchParams, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, rocEraToAd, searchParamsToObject, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useValue, validTaxId, validateDateString, validateFileType, wait };
1179
+ export { ByteSize, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, convertBytes, createEnumLikeObject, debounce, deepMerge, extractEnumLikeObject, fakeApi, formatAmount, formatBytes, formatStarMask, generatePeriodArray, getCurrentPeriod, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isEqual, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, isValidPassword, maskString, mergeRefs, objectToSearchParams, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, pick, pickByValue, rocEraToAd, searchParamsToObject, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useValue, validTaxId, validateDateString, validateFileType, wait };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gateweb/react-utils",
3
- "version": "1.8.0",
3
+ "version": "1.9.0",
4
4
  "description": "React Utils for GateWeb",
5
5
  "homepage": "https://github.com/GatewebSolutions/react-utils",
6
6
  "files": [