e22m4u 2 лет назад
Родитель
Сommit
b8ff801f3c
2 измененных файлов с 19 добавлено и 14 удалено
  1. 13 14
      src/repository/repository.d.ts
  2. 6 0
      src/types.d.ts

+ 13 - 14
src/repository/repository.d.ts

@@ -1,5 +1,6 @@
 import {Filter} from '../filter';
 import {ModelId} from '../types';
+import {Flatten} from '../types';
 import {Adapter} from '../adapter';
 import {ModelData} from '../types';
 import {PartialBy} from '../types';
@@ -49,7 +50,7 @@ export declare class Repository<
   create(
     data: OptionalUnlessRequiredId<IdName, Data>,
     filter?: ItemFilter,
-  ): Promise<Data>;
+  ): Promise<Flatten<Data>>;
 
   /**
    * Replace by id.
@@ -62,7 +63,7 @@ export declare class Repository<
     id: IdType,
     data: Omit<Data, IdName>,
     filter?: ItemFilter,
-  ): Promise<Data>;
+  ): Promise<Flatten<Data>>;
 
   /**
    * Replace or create.
@@ -73,7 +74,7 @@ export declare class Repository<
   replaceOrCreate(
     data: OptionalUnlessRequiredId<IdName, Data>,
     filter?: ItemFilter,
-  ): Promise<Data>;
+  ): Promise<Flatten<Data>>;
 
   /**
    * Patch by id.
@@ -86,21 +87,21 @@ export declare class Repository<
     id: IdType,
     data: PartialWithoutId<IdName, Data>,
     filter?: ItemFilter,
-  ): Promise<Data>;
+  ): Promise<Flatten<Data>>;
 
   /**
    * Find.
    *
    * @param filter
    */
-  find(filter?: Filter): Promise<Data[]>;
+  find(filter?: Filter): Promise<Flatten<Data>[]>;
 
   /**
    * Find one.
    *
    * @param filter
    */
-  findOne(filter?: ItemFilter): Promise<Data | undefined>;
+  findOne(filter?: ItemFilter): Promise<Flatten<Data> | undefined>;
 
   /**
    * Find by id.
@@ -108,7 +109,7 @@ export declare class Repository<
    * @param id
    * @param filter
    */
-  findById(id: IdType, filter?: ItemFilter): Promise<Data>;
+  findById(id: IdType, filter?: ItemFilter): Promise<Flatten<Data>>;
 
   /**
    * Delete.
@@ -142,15 +143,13 @@ export declare class Repository<
 /**
  * Makes fields as optional and remove id field.
  */
-type PartialWithoutId<IdName extends string, Data> = Partial<
-  Omit<Data, IdName>
+type PartialWithoutId<IdName extends string, Data> = Flatten<
+  Partial<Omit<Data, IdName>>
 >;
 
 /**
  * Makes the given id field as optional.
  */
-type OptionalUnlessRequiredId<IdName extends string, Data> = Data extends {
-  [K in IdName]: any;
-}
-  ? PartialBy<Data, IdName>
-  : Data;
+type OptionalUnlessRequiredId<IdName extends string, Data> = Flatten<
+  Data extends {[K in IdName]: any} ? PartialBy<Data, IdName> : Data
+>;

+ 6 - 0
src/types.d.ts

@@ -22,3 +22,9 @@ export declare type ModelData = {
  * Model id.
  */
 export declare type ModelId = unknown;
+
+/**
+ * Flatten.
+ */
+type Identity<T> = T;
+export declare type Flatten<T> = Identity<{[k in keyof T]: T[k]}>;