@etsoo/shared 1.1.2 → 1.1.3

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/README.md CHANGED
@@ -36,6 +36,7 @@ Data type definitions and type safe functions
36
36
  |EnumBase|Enum base type|
37
37
  |EnumValue|Enum value type|
38
38
  |ExtendedEnum|Extended type enum|
39
+ |Func<R>|Function type, R is return type|
39
40
  |HAlign|Horizontal align|
40
41
  |HAlignEnum|Horizontal align enum|
41
42
  |IdType|Number and string combination id type|
@@ -141,7 +141,10 @@ test('Tests for getResult', () => {
141
141
  const inputNumber: test = 5;
142
142
 
143
143
  // Act & assert
144
- expect(Utils.getResult(input, true)).toBe(1);
144
+ const result = Utils.getResult(input, true);
145
+ expect(result).toBe(1);
145
146
  expect(Utils.getResult(input, false)).toBe(0);
146
- expect(Utils.getResult(inputNumber)).toBe(5);
147
+
148
+ const valueResult = Utils.getResult(inputNumber);
149
+ expect(valueResult).toBe(5);
147
150
  });
@@ -128,6 +128,10 @@ export declare namespace DataTypes {
128
128
  * Enum base type
129
129
  */
130
130
  type EnumBase = Record<string, EnumValue>;
131
+ /**
132
+ * Function type
133
+ */
134
+ type Func<R> = (...args: any[]) => R;
131
135
  /**
132
136
  * String key, unknown value Record
133
137
  */
@@ -75,7 +75,7 @@ export declare namespace Utils {
75
75
  * @param args Arguments
76
76
  * @returns Result
77
77
  */
78
- const getResult: <R extends DataTypes.Simple, F extends (...args: any[]) => R>(input: R | F, ...args: Parameters<F>) => R;
78
+ const getResult: <R, T = R | DataTypes.Func<R>>(input: T, ...args: T extends DataTypes.Func<R> ? Parameters<T> : never) => T extends DataTypes.Func<R> ? ReturnType<T> : T;
79
79
  /**
80
80
  * Get time zone
81
81
  * @returns Timezone
@@ -128,6 +128,10 @@ export declare namespace DataTypes {
128
128
  * Enum base type
129
129
  */
130
130
  type EnumBase = Record<string, EnumValue>;
131
+ /**
132
+ * Function type
133
+ */
134
+ type Func<R> = (...args: any[]) => R;
131
135
  /**
132
136
  * String key, unknown value Record
133
137
  */
@@ -75,7 +75,7 @@ export declare namespace Utils {
75
75
  * @param args Arguments
76
76
  * @returns Result
77
77
  */
78
- const getResult: <R extends DataTypes.Simple, F extends (...args: any[]) => R>(input: R | F, ...args: Parameters<F>) => R;
78
+ const getResult: <R, T = R | DataTypes.Func<R>>(input: T, ...args: T extends DataTypes.Func<R> ? Parameters<T> : never) => T extends DataTypes.Func<R> ? ReturnType<T> : T;
79
79
  /**
80
80
  * Get time zone
81
81
  * @returns Timezone
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/shared",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "TypeScript shared utilities and functions",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
package/src/DataTypes.ts CHANGED
@@ -166,6 +166,11 @@ export namespace DataTypes {
166
166
  */
167
167
  export type EnumBase = Record<string, EnumValue>;
168
168
 
169
+ /**
170
+ * Function type
171
+ */
172
+ export type Func<R> = (...args: any[]) => R;
173
+
169
174
  /**
170
175
  * String key, unknown value Record
171
176
  */
package/src/Utils.ts CHANGED
@@ -193,13 +193,10 @@ export namespace Utils {
193
193
  * @param args Arguments
194
194
  * @returns Result
195
195
  */
196
- export const getResult = <
197
- R extends DataTypes.Simple,
198
- F extends (...args: any[]) => R
199
- >(
200
- input: F | R,
201
- ...args: Parameters<F>
202
- ): R => {
196
+ export const getResult = <R, T = DataTypes.Func<R> | R>(
197
+ input: T,
198
+ ...args: T extends DataTypes.Func<R> ? Parameters<typeof input> : never
199
+ ): T extends DataTypes.Func<R> ? ReturnType<T> : T => {
203
200
  return typeof input === 'function' ? input(...args) : input;
204
201
  };
205
202