@etsoo/shared 1.2.56 → 1.2.57

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.
@@ -217,6 +217,26 @@ test("Tests for AddAndEditType", () => {
217
217
  expect(data2.name).toBe(data3.name);
218
218
  });
219
219
 
220
+ test("Tests for AddOrEditType", () => {
221
+ type Entity = {
222
+ id: number;
223
+ name: string;
224
+ age?: number;
225
+ };
226
+ type AddEntity = DataTypes.AddOrEditType<Entity, false>;
227
+ type EditEntity = DataTypes.AddOrEditType<Entity, true>;
228
+
229
+ const data1: AddEntity = { id: 1, name: "hello" };
230
+ const data2: AddEntity = { id: undefined, name: "hello" };
231
+ const data3: AddEntity = { name: "hello" };
232
+
233
+ const data4: EditEntity = { id: 1, name: "hello", changedFields: ["name"] };
234
+
235
+ expect(data1.name).toBe(data2.name);
236
+ expect(data2.name).toBe(data3.name);
237
+ expect(data3.name).toBe(data4.name);
238
+ });
239
+
220
240
  test("Tests for BasicTemplate", () => {
221
241
  const template: DataTypes.BasicTemplate = {
222
242
  id: "number",
@@ -147,7 +147,7 @@ export declare namespace DataTypes {
147
147
  }, D extends string = "id"> = (Omit<T, D> & {
148
148
  [key in D]?: undefined | never;
149
149
  }) | (Partial<T> & Readonly<Pick<T, D>> & {
150
- changedFields?: string[];
150
+ changedFields?: (keyof T & string)[];
151
151
  });
152
152
  /**
153
153
  * Add or edit conditional type
@@ -158,7 +158,7 @@ export declare namespace DataTypes {
158
158
  }, // Entity modal
159
159
  E extends boolean, // Editing or not
160
160
  D extends string = "id"> = E extends false ? Optional<T, D> : Partial<T> & Readonly<Pick<T, D>> & {
161
- changedFields?: string[];
161
+ changedFields?: (keyof T & string)[];
162
162
  };
163
163
  /**
164
164
  * Key collection, like { key1: {}, key2: {} }
@@ -147,7 +147,7 @@ export declare namespace DataTypes {
147
147
  }, D extends string = "id"> = (Omit<T, D> & {
148
148
  [key in D]?: undefined | never;
149
149
  }) | (Partial<T> & Readonly<Pick<T, D>> & {
150
- changedFields?: string[];
150
+ changedFields?: (keyof T & string)[];
151
151
  });
152
152
  /**
153
153
  * Add or edit conditional type
@@ -158,7 +158,7 @@ export declare namespace DataTypes {
158
158
  }, // Entity modal
159
159
  E extends boolean, // Editing or not
160
160
  D extends string = "id"> = E extends false ? Optional<T, D> : Partial<T> & Readonly<Pick<T, D>> & {
161
- changedFields?: string[];
161
+ changedFields?: (keyof T & string)[];
162
162
  };
163
163
  /**
164
164
  * Key collection, like { key1: {}, key2: {} }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@etsoo/shared",
3
- "version": "1.2.56",
3
+ "version": "1.2.57",
4
4
  "description": "TypeScript shared utilities and functions",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/mjs/index.js",
@@ -36,7 +36,6 @@
36
36
  },
37
37
  "homepage": "https://github.com/ETSOO/Shared#readme",
38
38
  "devDependencies": {
39
- "@types/jest": "^29.5.14",
40
39
  "@types/lodash.isequal": "^4.5.8",
41
40
  "@vitejs/plugin-react": "^4.3.4",
42
41
  "jsdom": "^26.0.0",
package/src/DataTypes.ts CHANGED
@@ -191,7 +191,8 @@ export namespace DataTypes {
191
191
  D extends string = "id"
192
192
  > =
193
193
  | (Omit<T, D> & { [key in D]?: undefined | never })
194
- | (Partial<T> & Readonly<Pick<T, D>> & { changedFields?: string[] });
194
+ | (Partial<T> &
195
+ Readonly<Pick<T, D>> & { changedFields?: (keyof T & string)[] });
195
196
 
196
197
  /**
197
198
  * Add or edit conditional type
@@ -203,7 +204,8 @@ export namespace DataTypes {
203
204
  D extends string = "id" // Default is 'id' field
204
205
  > = E extends false
205
206
  ? Optional<T, D>
206
- : Partial<T> & Readonly<Pick<T, D>> & { changedFields?: string[] };
207
+ : Partial<T> &
208
+ Readonly<Pick<T, D>> & { changedFields?: (keyof T & string)[] };
207
209
 
208
210
  /**
209
211
  * Key collection, like { key1: {}, key2: {} }