@gateweb/react-utils 0.0.3 → 0.0.5

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.
@@ -1,3 +1,6 @@
1
+ import { TExtractValueType } from './types.js';
2
+ export * from './types.js';
3
+
1
4
  type CamelToPascal<S extends string> = S extends `${infer Head}${infer Tail}` ? `${Uppercase<Head>}${Tail}` : S;
2
5
  /**
3
6
  * convert CamelCase string to PascalCase string
@@ -203,6 +206,68 @@ declare const rocEraToAd: (dateString: string, format?: string) => string;
203
206
  */
204
207
  declare const adToRocEra: (dateString: string, format?: string) => string;
205
208
 
209
+ /**
210
+ * 將指定格式的物件轉換成類似 enum 的物件
211
+ *
212
+ * @param enumObject enum 物件
213
+ * @param valueKey value 的 key
214
+ *
215
+ * @example
216
+ *
217
+ * ```js
218
+ * const myObj = {
219
+ * A: { value: 'a' },
220
+ * B: { value: 'b', other: 'other' },
221
+ * }
222
+ *
223
+ * const enumCode = extractEnumLikeObject(myObj, 'value');
224
+ * console.log(enumCode); // { A: 'a', B: 'b' }
225
+ * ```
226
+ */
227
+ declare const extractEnumLikeObject: <T extends Record<string, { [P in K]: any; }>, K extends string>(enumObject: T, valueKey: K) => { [key in keyof T]: T[key][K]; };
228
+ /**
229
+ * 將指定格式的物件生成 enum 物件、enum 列表、取得 label 的方法
230
+ *
231
+ * 輸入的物件格式為
232
+ *
233
+ * ```ts
234
+ * { key: { value: string, label: string }, key2: { value: string, label: string }, ... }
235
+ * ```
236
+ *
237
+ * 會生成以下三個物件
238
+ *
239
+ * enum 物件 - 根據 value 生成的 enum 物件
240
+ *
241
+ * enum 列表 - 根據 value 與 label 生成的列表
242
+ *
243
+ * 取得 label 的方法 - 傳入 value 可以取得對應的 label
244
+ *
245
+ * @param obj 要處理的物件
246
+ * @param name 生成的 enum 名稱
247
+ *
248
+ * @example
249
+ *
250
+ * ```ts
251
+ * const Status = { Enabled: { value: 'enabled', label: '啟用' }, Disabled: { value: 'disabled', label: '停用' } };
252
+ *
253
+ * const { EnumStatus, StatusList, getStatusLabel } = createEnumLikeObject(Status, 'Status');
254
+ *
255
+ * console.log(EnumStatus); // { Enabled: 'enabled', Disabled: 'disabled' }
256
+ *
257
+ * console.log(StatusList); // [ { key: 'Enabled', value: 'enabled', label: '啟用' }, { key: 'Disabled', value: 'disabled', label: '停用' } ]
258
+ *
259
+ * console.log(getStatusLabel('enabled')); // '啟用'
260
+ * ```
261
+ */
262
+ declare const createEnumLikeObject: <T extends Record<string, {
263
+ value: any;
264
+ label: string;
265
+ }>, N extends string>(obj: T, name: N) => { [K in `Enum${N}` | `${N}List` | `get${N}Label`]: K extends `Enum${N}` ? { [key in keyof T]: T[key]["value"]; } : K extends `${N}List` ? {
266
+ value: any;
267
+ label: string;
268
+ key: string;
269
+ }[] : (value: TExtractValueType<T, "value">) => string | TExtractValueType<T, "value">; };
270
+
206
271
  /**
207
272
  * 檢查檔案是否為合法的 MIME 類型
208
273
  *
@@ -600,28 +665,4 @@ declare const getLocalStorage: <T>(key: string, deCode?: boolean) => T | undefin
600
665
  */
601
666
  declare const setLocalStorage: (key: string, value: Record<string, any>, enCode?: boolean) => void;
602
667
 
603
- /**
604
- * 從對象類型中提取特定屬性的值類型。
605
- *
606
- * @template T 要處理的對象類型
607
- * @template K 要提取的屬性名(字符串字面量類型)
608
- *
609
- * @description
610
- * 這個類型用於從一個對象類型 T 中提取指定屬性 K 的值類型。
611
- * T 應該是一個對象,其每個屬性都是另一個包含 K 屬性的對象。
612
- * 如果 T 不符合這個結構,或者指定的屬性 K 不存在,則返回 never。
613
- *
614
- * @example
615
- * type Obj = {
616
- * a: { value: string },
617
- * b: { value: number }
618
- * };
619
- * type Result = ExtractValueType<Obj, 'value'>; // string | number
620
- *
621
- * @returns 返回 T 中所有 K 屬性值的聯合類型,如果不符合條件則返回 never
622
- */
623
- type TExtractValueType<T, K extends string> = T extends Record<string, {
624
- [P in K]: infer R;
625
- }> ? R : never;
626
-
627
- export { type TCountdownActions, type TExtractValueType, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, debounce, downloadFile, formatAmount, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, rocEraToAd, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, validTaxId, validateDateString, validateFileType };
668
+ export { type TCountdownActions, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, createEnumLikeObject, debounce, downloadFile, extractEnumLikeObject, formatAmount, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, rocEraToAd, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, validTaxId, validateDateString, validateFileType };
package/dist/cjs/index.js CHANGED
@@ -307,6 +307,78 @@ const transformObjectKey = (obj, transformFunName)=>{
307
307
  return dayjs__default.default(dateString, format).add(-1911, 'year').format(format).substring(1);
308
308
  };
309
309
 
310
+ /**
311
+ * 將指定格式的物件轉換成類似 enum 的物件
312
+ *
313
+ * @param enumObject enum 物件
314
+ * @param valueKey value 的 key
315
+ *
316
+ * @example
317
+ *
318
+ * ```js
319
+ * const myObj = {
320
+ * A: { value: 'a' },
321
+ * B: { value: 'b', other: 'other' },
322
+ * }
323
+ *
324
+ * const enumCode = extractEnumLikeObject(myObj, 'value');
325
+ * console.log(enumCode); // { A: 'a', B: 'b' }
326
+ * ```
327
+ */ const extractEnumLikeObject = (enumObject, valueKey)=>Object.entries(enumObject).reduce((acc, [key, value])=>({
328
+ ...acc,
329
+ [key]: value[valueKey]
330
+ }), {});
331
+ /**
332
+ * 將指定格式的物件生成 enum 物件、enum 列表、取得 label 的方法
333
+ *
334
+ * 輸入的物件格式為
335
+ *
336
+ * ```ts
337
+ * { key: { value: string, label: string }, key2: { value: string, label: string }, ... }
338
+ * ```
339
+ *
340
+ * 會生成以下三個物件
341
+ *
342
+ * enum 物件 - 根據 value 生成的 enum 物件
343
+ *
344
+ * enum 列表 - 根據 value 與 label 生成的列表
345
+ *
346
+ * 取得 label 的方法 - 傳入 value 可以取得對應的 label
347
+ *
348
+ * @param obj 要處理的物件
349
+ * @param name 生成的 enum 名稱
350
+ *
351
+ * @example
352
+ *
353
+ * ```ts
354
+ * const Status = { Enabled: { value: 'enabled', label: '啟用' }, Disabled: { value: 'disabled', label: '停用' } };
355
+ *
356
+ * const { EnumStatus, StatusList, getStatusLabel } = createEnumLikeObject(Status, 'Status');
357
+ *
358
+ * console.log(EnumStatus); // { Enabled: 'enabled', Disabled: 'disabled' }
359
+ *
360
+ * console.log(StatusList); // [ { key: 'Enabled', value: 'enabled', label: '啟用' }, { key: 'Disabled', value: 'disabled', label: '停用' } ]
361
+ *
362
+ * console.log(getStatusLabel('enabled')); // '啟用'
363
+ * ```
364
+ */ const createEnumLikeObject = (obj, name)=>{
365
+ const Enum = extractEnumLikeObject(obj, 'value');
366
+ const list = Object.entries(obj).map(([key, item])=>({
367
+ key,
368
+ ...item
369
+ }));
370
+ const getLabel = (value)=>{
371
+ const targetItem = list.find((item)=>item.value === value);
372
+ if (!targetItem) return value;
373
+ return targetItem.label;
374
+ };
375
+ return {
376
+ [`Enum${name}`]: Enum,
377
+ [`${name}List`]: list,
378
+ [`get${name}Label`]: getLabel
379
+ };
380
+ };
381
+
310
382
  /**
311
383
  * 檢查檔案是否為合法的 MIME 類型
312
384
  *
@@ -683,7 +755,9 @@ exports.camelCase2PascalCase = camelCase2PascalCase;
683
755
  exports.camelCase2SnakeCase = camelCase2SnakeCase;
684
756
  exports.camelString2PascalString = camelString2PascalString;
685
757
  exports.camelString2SnakeString = camelString2SnakeString;
758
+ exports.createEnumLikeObject = createEnumLikeObject;
686
759
  exports.debounce = debounce;
760
+ exports.extractEnumLikeObject = extractEnumLikeObject;
687
761
  exports.formatAmount = formatAmount;
688
762
  exports.formatStarMask = formatStarMask;
689
763
  exports.generatePeriodArray = generatePeriodArray;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 從對象類型中提取特定屬性的值類型。
3
+ *
4
+ * @template T 要處理的對象類型
5
+ * @template K 要提取的屬性名(字符串字面量類型)
6
+ *
7
+ * @description
8
+ * 這個類型用於從一個對象類型 T 中提取指定屬性 K 的值類型。
9
+ * T 應該是一個對象,其每個屬性都是另一個包含 K 屬性的對象。
10
+ * 如果 T 不符合這個結構,或者指定的屬性 K 不存在,則返回 never。
11
+ *
12
+ * @example
13
+ * type Obj = {
14
+ * a: { value: string },
15
+ * b: { value: number }
16
+ * };
17
+ * type Result = ExtractValueType<Obj, 'value'>; // string | number
18
+ *
19
+ * @returns 返回 T 中所有 K 屬性值的聯合類型,如果不符合條件則返回 never
20
+ */
21
+ type TExtractValueType<T, K extends string> = T extends Record<string, {
22
+ [P in K]: infer R;
23
+ }> ? R : never;
24
+
25
+ export type { TExtractValueType };
@@ -0,0 +1 @@
1
+
@@ -1,3 +1,6 @@
1
+ import { TExtractValueType } from './types.mjs';
2
+ export * from './types.mjs';
3
+
1
4
  type CamelToPascal<S extends string> = S extends `${infer Head}${infer Tail}` ? `${Uppercase<Head>}${Tail}` : S;
2
5
  /**
3
6
  * convert CamelCase string to PascalCase string
@@ -203,6 +206,68 @@ declare const rocEraToAd: (dateString: string, format?: string) => string;
203
206
  */
204
207
  declare const adToRocEra: (dateString: string, format?: string) => string;
205
208
 
209
+ /**
210
+ * 將指定格式的物件轉換成類似 enum 的物件
211
+ *
212
+ * @param enumObject enum 物件
213
+ * @param valueKey value 的 key
214
+ *
215
+ * @example
216
+ *
217
+ * ```js
218
+ * const myObj = {
219
+ * A: { value: 'a' },
220
+ * B: { value: 'b', other: 'other' },
221
+ * }
222
+ *
223
+ * const enumCode = extractEnumLikeObject(myObj, 'value');
224
+ * console.log(enumCode); // { A: 'a', B: 'b' }
225
+ * ```
226
+ */
227
+ declare const extractEnumLikeObject: <T extends Record<string, { [P in K]: any; }>, K extends string>(enumObject: T, valueKey: K) => { [key in keyof T]: T[key][K]; };
228
+ /**
229
+ * 將指定格式的物件生成 enum 物件、enum 列表、取得 label 的方法
230
+ *
231
+ * 輸入的物件格式為
232
+ *
233
+ * ```ts
234
+ * { key: { value: string, label: string }, key2: { value: string, label: string }, ... }
235
+ * ```
236
+ *
237
+ * 會生成以下三個物件
238
+ *
239
+ * enum 物件 - 根據 value 生成的 enum 物件
240
+ *
241
+ * enum 列表 - 根據 value 與 label 生成的列表
242
+ *
243
+ * 取得 label 的方法 - 傳入 value 可以取得對應的 label
244
+ *
245
+ * @param obj 要處理的物件
246
+ * @param name 生成的 enum 名稱
247
+ *
248
+ * @example
249
+ *
250
+ * ```ts
251
+ * const Status = { Enabled: { value: 'enabled', label: '啟用' }, Disabled: { value: 'disabled', label: '停用' } };
252
+ *
253
+ * const { EnumStatus, StatusList, getStatusLabel } = createEnumLikeObject(Status, 'Status');
254
+ *
255
+ * console.log(EnumStatus); // { Enabled: 'enabled', Disabled: 'disabled' }
256
+ *
257
+ * console.log(StatusList); // [ { key: 'Enabled', value: 'enabled', label: '啟用' }, { key: 'Disabled', value: 'disabled', label: '停用' } ]
258
+ *
259
+ * console.log(getStatusLabel('enabled')); // '啟用'
260
+ * ```
261
+ */
262
+ declare const createEnumLikeObject: <T extends Record<string, {
263
+ value: any;
264
+ label: string;
265
+ }>, N extends string>(obj: T, name: N) => { [K in `Enum${N}` | `${N}List` | `get${N}Label`]: K extends `Enum${N}` ? { [key in keyof T]: T[key]["value"]; } : K extends `${N}List` ? {
266
+ value: any;
267
+ label: string;
268
+ key: string;
269
+ }[] : (value: TExtractValueType<T, "value">) => string | TExtractValueType<T, "value">; };
270
+
206
271
  /**
207
272
  * 檢查檔案是否為合法的 MIME 類型
208
273
  *
@@ -600,28 +665,4 @@ declare const getLocalStorage: <T>(key: string, deCode?: boolean) => T | undefin
600
665
  */
601
666
  declare const setLocalStorage: (key: string, value: Record<string, any>, enCode?: boolean) => void;
602
667
 
603
- /**
604
- * 從對象類型中提取特定屬性的值類型。
605
- *
606
- * @template T 要處理的對象類型
607
- * @template K 要提取的屬性名(字符串字面量類型)
608
- *
609
- * @description
610
- * 這個類型用於從一個對象類型 T 中提取指定屬性 K 的值類型。
611
- * T 應該是一個對象,其每個屬性都是另一個包含 K 屬性的對象。
612
- * 如果 T 不符合這個結構,或者指定的屬性 K 不存在,則返回 never。
613
- *
614
- * @example
615
- * type Obj = {
616
- * a: { value: string },
617
- * b: { value: number }
618
- * };
619
- * type Result = ExtractValueType<Obj, 'value'>; // string | number
620
- *
621
- * @returns 返回 T 中所有 K 屬性值的聯合類型,如果不符合條件則返回 never
622
- */
623
- type TExtractValueType<T, K extends string> = T extends Record<string, {
624
- [P in K]: infer R;
625
- }> ? R : never;
626
-
627
- export { type TCountdownActions, type TExtractValueType, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, debounce, downloadFile, formatAmount, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, rocEraToAd, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, validTaxId, validateDateString, validateFileType };
668
+ export { type TCountdownActions, adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, createEnumLikeObject, debounce, downloadFile, extractEnumLikeObject, formatAmount, formatStarMask, generatePeriodArray, getCurrentPeriod, getLocalStorage, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, rocEraToAd, setLocalStorage, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, useCountdown, validTaxId, validateDateString, validateFileType };
package/dist/es/index.mjs CHANGED
@@ -301,6 +301,78 @@ const transformObjectKey = (obj, transformFunName)=>{
301
301
  return dayjs(dateString, format).add(-1911, 'year').format(format).substring(1);
302
302
  };
303
303
 
304
+ /**
305
+ * 將指定格式的物件轉換成類似 enum 的物件
306
+ *
307
+ * @param enumObject enum 物件
308
+ * @param valueKey value 的 key
309
+ *
310
+ * @example
311
+ *
312
+ * ```js
313
+ * const myObj = {
314
+ * A: { value: 'a' },
315
+ * B: { value: 'b', other: 'other' },
316
+ * }
317
+ *
318
+ * const enumCode = extractEnumLikeObject(myObj, 'value');
319
+ * console.log(enumCode); // { A: 'a', B: 'b' }
320
+ * ```
321
+ */ const extractEnumLikeObject = (enumObject, valueKey)=>Object.entries(enumObject).reduce((acc, [key, value])=>({
322
+ ...acc,
323
+ [key]: value[valueKey]
324
+ }), {});
325
+ /**
326
+ * 將指定格式的物件生成 enum 物件、enum 列表、取得 label 的方法
327
+ *
328
+ * 輸入的物件格式為
329
+ *
330
+ * ```ts
331
+ * { key: { value: string, label: string }, key2: { value: string, label: string }, ... }
332
+ * ```
333
+ *
334
+ * 會生成以下三個物件
335
+ *
336
+ * enum 物件 - 根據 value 生成的 enum 物件
337
+ *
338
+ * enum 列表 - 根據 value 與 label 生成的列表
339
+ *
340
+ * 取得 label 的方法 - 傳入 value 可以取得對應的 label
341
+ *
342
+ * @param obj 要處理的物件
343
+ * @param name 生成的 enum 名稱
344
+ *
345
+ * @example
346
+ *
347
+ * ```ts
348
+ * const Status = { Enabled: { value: 'enabled', label: '啟用' }, Disabled: { value: 'disabled', label: '停用' } };
349
+ *
350
+ * const { EnumStatus, StatusList, getStatusLabel } = createEnumLikeObject(Status, 'Status');
351
+ *
352
+ * console.log(EnumStatus); // { Enabled: 'enabled', Disabled: 'disabled' }
353
+ *
354
+ * console.log(StatusList); // [ { key: 'Enabled', value: 'enabled', label: '啟用' }, { key: 'Disabled', value: 'disabled', label: '停用' } ]
355
+ *
356
+ * console.log(getStatusLabel('enabled')); // '啟用'
357
+ * ```
358
+ */ const createEnumLikeObject = (obj, name)=>{
359
+ const Enum = extractEnumLikeObject(obj, 'value');
360
+ const list = Object.entries(obj).map(([key, item])=>({
361
+ key,
362
+ ...item
363
+ }));
364
+ const getLabel = (value)=>{
365
+ const targetItem = list.find((item)=>item.value === value);
366
+ if (!targetItem) return value;
367
+ return targetItem.label;
368
+ };
369
+ return {
370
+ [`Enum${name}`]: Enum,
371
+ [`${name}List`]: list,
372
+ [`get${name}Label`]: getLabel
373
+ };
374
+ };
375
+
304
376
  /**
305
377
  * 檢查檔案是否為合法的 MIME 類型
306
378
  *
@@ -668,4 +740,4 @@ message) {
668
740
  * formatString('123456', 1, 4) // '1****6'
669
741
  */ const formatStarMask = (str, n, m)=>str.slice(0, n) + '*'.repeat(m - n + 1) + str.slice(m + 1);
670
742
 
671
- export { adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, debounce, formatAmount, formatStarMask, generatePeriodArray, getCurrentPeriod, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, rocEraToAd, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, validTaxId, validateDateString, validateFileType };
743
+ export { adToRocEra, camelCase2PascalCase, camelCase2SnakeCase, camelString2PascalString, camelString2SnakeString, createEnumLikeObject, debounce, extractEnumLikeObject, formatAmount, formatStarMask, generatePeriodArray, getCurrentPeriod, getMimeType, invariant, isChinese, isDateString, isDateTimeString, isEmail, isEnglish, isNonZeroStart, isNumber, isNumberAtLeastN, isNumberN, isNumberNM, isServer, isTWMobile, isTWPhone, isTimeString, omit, omitByValue, pascalCase2CamelCase, pascalCase2SnakeCase, pascalString2CamelString, pascalString2SnakeString, rocEraToAd, snakeCase2CamelCase, snakeCase2PascalCase, snakeString2CamelString, snakeString2PascalString, throttle, validTaxId, validateDateString, validateFileType };
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 從對象類型中提取特定屬性的值類型。
3
+ *
4
+ * @template T 要處理的對象類型
5
+ * @template K 要提取的屬性名(字符串字面量類型)
6
+ *
7
+ * @description
8
+ * 這個類型用於從一個對象類型 T 中提取指定屬性 K 的值類型。
9
+ * T 應該是一個對象,其每個屬性都是另一個包含 K 屬性的對象。
10
+ * 如果 T 不符合這個結構,或者指定的屬性 K 不存在,則返回 never。
11
+ *
12
+ * @example
13
+ * type Obj = {
14
+ * a: { value: string },
15
+ * b: { value: number }
16
+ * };
17
+ * type Result = ExtractValueType<Obj, 'value'>; // string | number
18
+ *
19
+ * @returns 返回 T 中所有 K 屬性值的聯合類型,如果不符合條件則返回 never
20
+ */
21
+ type TExtractValueType<T, K extends string> = T extends Record<string, {
22
+ [P in K]: infer R;
23
+ }> ? R : never;
24
+
25
+ export type { TExtractValueType };
@@ -0,0 +1 @@
1
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gateweb/react-utils",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "React Utils for GateWeb",
5
5
  "homepage": "https://github.com/GatewebSolutions/react-utils",
6
6
  "files": [
@@ -19,6 +19,16 @@
19
19
  "types": "./dist/cjs/index.d.ts",
20
20
  "default": "./dist/cjs/index.js"
21
21
  }
22
+ },
23
+ "./types": {
24
+ "import": {
25
+ "types": "./dist/es/types.d.mts",
26
+ "default": "./dist/es/types.mjs"
27
+ },
28
+ "require": {
29
+ "types": "./dist/cjs/types.d.ts",
30
+ "default": "./dist/cjs/types.js"
31
+ }
22
32
  }
23
33
  },
24
34
  "publishConfig": {