@etsoo/shared 1.1.1 → 1.1.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.
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|
@@ -72,6 +72,9 @@ test('Tests for getEnumKeys', () => {
72
72
  GRAM = 'GRAM33'
73
73
  }
74
74
  expect(DataTypes.getEnumKeys(ProductUnit)).toContainEqual('GRAM');
75
+
76
+ const keys = DataTypes.getEnumKeys(DataTypes.CombinedEnum);
77
+ expect(keys).toContainEqual('Unkwown');
75
78
  });
76
79
 
77
80
  test('Tests for getItemId', () => {
@@ -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
  */
@@ -251,7 +255,7 @@ export declare namespace DataTypes {
251
255
  * @param input Input Enum
252
256
  * @returns Keys
253
257
  */
254
- function getEnumKeys<T extends EnumBase, K extends keyof T>(input: T): K[];
258
+ function getEnumKeys<T extends EnumBase, K extends keyof T & string>(input: T): K[];
255
259
  /**
256
260
  * Get object id field value
257
261
  * @param data Data
@@ -75,7 +75,7 @@ export declare namespace Utils {
75
75
  * @param args Arguments
76
76
  * @returns Result
77
77
  */
78
- const getResult: <R, F extends R | ((...args: unknown[]) => R)>(input: F, ...args: unknown[]) => 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
  */
@@ -251,7 +255,7 @@ export declare namespace DataTypes {
251
255
  * @param input Input Enum
252
256
  * @returns Keys
253
257
  */
254
- function getEnumKeys<T extends EnumBase, K extends keyof T>(input: T): K[];
258
+ function getEnumKeys<T extends EnumBase, K extends keyof T & string>(input: T): K[];
255
259
  /**
256
260
  * Get object id field value
257
261
  * @param data Data
@@ -75,7 +75,7 @@ export declare namespace Utils {
75
75
  * @param args Arguments
76
76
  * @returns Result
77
77
  */
78
- const getResult: <R, F extends R | ((...args: unknown[]) => R)>(input: F, ...args: unknown[]) => 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.1",
3
+ "version": "1.1.5",
4
4
  "description": "TypeScript shared utilities and functions",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -55,13 +55,13 @@
55
55
  "dependencies": {},
56
56
  "devDependencies": {
57
57
  "@types/jest": "^27.4.0",
58
- "@typescript-eslint/eslint-plugin": "^5.9.0",
59
- "@typescript-eslint/parser": "^5.9.0",
60
- "eslint": "^8.6.0",
58
+ "@typescript-eslint/eslint-plugin": "^5.10.0",
59
+ "@typescript-eslint/parser": "^5.10.0",
60
+ "eslint": "^8.7.0",
61
61
  "eslint-config-airbnb-base": "^15.0.0",
62
62
  "eslint-plugin-import": "^2.25.4",
63
63
  "jest": "^27.4.7",
64
- "ts-jest": "^27.1.2",
64
+ "ts-jest": "^27.1.3",
65
65
  "typescript": "^4.5.4"
66
66
  }
67
67
  }
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
  */
@@ -492,7 +497,7 @@ export namespace DataTypes {
492
497
  * @param input Input Enum
493
498
  * @returns Keys
494
499
  */
495
- export function getEnumKeys<T extends EnumBase, K extends keyof T>(
500
+ export function getEnumKeys<T extends EnumBase, K extends keyof T & string>(
496
501
  input: T
497
502
  ): K[] {
498
503
  return Object.keys(input)
package/src/Utils.ts CHANGED
@@ -193,10 +193,10 @@ export namespace Utils {
193
193
  * @param args Arguments
194
194
  * @returns Result
195
195
  */
196
- export const getResult = <R, F extends ((...args: unknown[]) => R) | R>(
197
- input: F,
198
- ...args: unknown[]
199
- ): 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 => {
200
200
  return typeof input === 'function' ? input(...args) : input;
201
201
  };
202
202