Skip to content

Commit 84fa388

Browse files
Resolved entity type when extend is present was reworked to present some weird behavior with Omit
1 parent 1978e33 commit 84fa388

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

changelog.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# DynamoDB Provider Changelog
22

3+
## v1.1.2
4+
5+
- **Type Enhance**: Resolved entity type when `extend` is present was reworked to present some weird behavior with `Omit`
6+
37
## v1.1.1
48

59
- **Fix**: Type for `ExtendableSingleTableEntity` adjusted based on new conditional `parser` property

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"homepage": "https://github.com/fabiosenracorrea/dynamodb-provider",
33
"author": "fabiosenracorrea",
44
"name": "dynamodb-provider",
5-
"version": "1.1.1",
5+
"version": "1.1.2",
66
"description": "A dynamodb Provider that simplifies the native api. It packs with a Single Table adaptor/pseudo ORM for single table design",
77
"main": "./lib/cjs/index.js",
88
"module": "./lib/esm/index.js",

src/singleTable/model/definitions/entity/parsers.ts

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { AnyFunction, AnyObject } from 'types';
1+
import { AnyFunction, AnyObject, IsNever, PrettifyObject } from 'types';
22

33
export type EntityParseParams<Entity extends AnyObject> = {
44
/**
@@ -14,12 +14,16 @@ export type EntityParseParams<Entity extends AnyObject> = {
1414
extend?: (entity: Entity) => AnyObject;
1515
};
1616

17+
type Extended<Entity extends AnyObject, ExtendResult> = PrettifyObject<
18+
IsNever<Extract<keyof Entity, keyof ExtendResult>> extends true
19+
? Entity & ExtendResult
20+
: Omit<Entity, Extract<keyof Entity, keyof ExtendResult>> & ExtendResult
21+
>;
22+
1723
export type ResolvedEntity<
1824
Entity extends AnyObject,
1925
Params extends EntityParseParams<Entity>,
20-
> = Params['extend'] extends AnyFunction
21-
? Omit<Entity, keyof ReturnType<Params['extend']>> & ReturnType<Params['extend']>
22-
: Entity;
26+
> = Params['extend'] extends AnyFunction ? Extended<Entity, ReturnType<Params['extend']>> : Entity;
2327

2428
export type EntityParser<E extends AnyObject, Parsers extends EntityParseParams<E>> = (
2529
entity: E,

0 commit comments

Comments
 (0)