@woltz/rich-domain 1.0.0 → 1.1.0
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/CHANGELOG.md +21 -103
- package/LICENSE +20 -20
- package/dist/base-entity.d.ts +1 -1
- package/dist/base-entity.d.ts.map +1 -1
- package/dist/base-entity.js +15 -19
- package/dist/base-entity.js.map +1 -1
- package/dist/constants.js +1 -4
- package/dist/constants.js.map +1 -1
- package/dist/criteria.d.ts +5 -11
- package/dist/criteria.d.ts.map +1 -1
- package/dist/criteria.js +5 -8
- package/dist/criteria.js.map +1 -1
- package/dist/deep-proxy.d.ts.map +1 -1
- package/dist/deep-proxy.js +19 -9
- package/dist/deep-proxy.js.map +1 -1
- package/dist/domain-event-bus.d.ts +5 -6
- package/dist/domain-event-bus.d.ts.map +1 -1
- package/dist/domain-event-bus.js +4 -17
- package/dist/domain-event-bus.js.map +1 -1
- package/dist/domain-event.d.ts +1 -31
- package/dist/domain-event.d.ts.map +1 -1
- package/dist/domain-event.js +4 -7
- package/dist/domain-event.js.map +1 -1
- package/dist/entity.d.ts +2 -2
- package/dist/entity.js +3 -8
- package/dist/entity.js.map +1 -1
- package/dist/exceptions.d.ts +251 -0
- package/dist/exceptions.d.ts.map +1 -0
- package/dist/exceptions.js +321 -0
- package/dist/exceptions.js.map +1 -0
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +14 -7
- package/dist/id.js.map +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -39
- package/dist/index.js.map +1 -1
- package/dist/mapper.js +1 -5
- package/dist/mapper.js.map +1 -1
- package/dist/paginated-result.d.ts.map +1 -1
- package/dist/paginated-result.js +15 -8
- package/dist/paginated-result.js.map +1 -1
- package/dist/repository/base-repository.js +4 -11
- package/dist/repository/base-repository.js.map +1 -1
- package/dist/repository/index.d.ts +1 -2
- package/dist/repository/index.d.ts.map +1 -1
- package/dist/repository/index.js +3 -26
- package/dist/repository/index.js.map +1 -1
- package/dist/repository/unit-of-work.d.ts +0 -11
- package/dist/repository/unit-of-work.d.ts.map +1 -1
- package/dist/repository/unit-of-work.js +2 -43
- package/dist/repository/unit-of-work.js.map +1 -1
- package/dist/types/criteria.d.ts +4 -0
- package/dist/types/criteria.d.ts.map +1 -1
- package/dist/types/criteria.js +1 -4
- package/dist/types/criteria.js.map +1 -1
- package/dist/types/domain-event.d.ts +32 -0
- package/dist/types/domain-event.d.ts.map +1 -0
- package/dist/types/domain-event.js +2 -0
- package/dist/types/domain-event.js.map +1 -0
- package/dist/types/domain.d.ts +2 -2
- package/dist/types/domain.d.ts.map +1 -1
- package/dist/types/domain.js +1 -2
- package/dist/types/history-tracker.d.ts +1 -1
- package/dist/types/history-tracker.d.ts.map +1 -1
- package/dist/types/history-tracker.js +1 -2
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +7 -22
- package/dist/types/index.js.map +1 -1
- package/dist/types/standard-schema.js +1 -2
- package/dist/types/unit-of-work.js +1 -2
- package/dist/types/utils.js +1 -2
- package/dist/validation-error.js +3 -9
- package/dist/validation-error.js.map +1 -1
- package/dist/value-object.d.ts +1 -1
- package/dist/value-object.d.ts.map +1 -1
- package/dist/value-object.js +7 -14
- package/dist/value-object.js.map +1 -1
- package/eslint.config.js +3 -3
- package/jest.config.js +1 -1
- package/package.json +14 -20
- package/src/base-entity.ts +3 -3
- package/src/criteria.ts +9 -9
- package/src/deep-proxy.ts +50 -38
- package/src/domain-event-bus.ts +152 -166
- package/src/domain-event.ts +53 -90
- package/src/entity.ts +16 -16
- package/src/exceptions.ts +435 -0
- package/src/id.ts +107 -94
- package/src/index.ts +25 -6
- package/src/paginated-result.ts +14 -1
- package/src/repository/index.ts +1 -6
- package/src/repository/unit-of-work.ts +1 -44
- package/src/types/criteria.ts +5 -0
- package/src/types/domain-event.ts +38 -0
- package/src/types/domain.ts +2 -3
- package/src/types/history-tracker.ts +1 -1
- package/src/types/index.ts +1 -0
- package/src/validation-error.ts +97 -97
- package/src/value-object.ts +3 -6
- package/tests/criteria.test.ts +8 -0
- package/tests/domain-events.test.ts +431 -445
- package/tests/entity-validation.test.ts +1 -1
- package/tests/entity.test.ts +33 -33
- package/tests/repository.test.ts +4 -2
- package/tests/utils.ts +254 -151
- package/tests/value-object-validation.test.ts +0 -9
- package/tsconfig.json +2 -24
- package/.github/workflows/ci.yml +0 -40
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.vscode/settings.json +0 -3
- package/commitlint.config.js +0 -23
- package/dist/repository/in-memory-repository.d.ts +0 -50
- package/dist/repository/in-memory-repository.d.ts.map +0 -1
- package/dist/repository/in-memory-repository.js +0 -97
- package/dist/repository/in-memory-repository.js.map +0 -1
- package/src/repository/in-memory-repository.ts +0 -116
package/CHANGELOG.md
CHANGED
|
@@ -2,122 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
-
## [1.
|
|
5
|
+
## [1.1.0](https://github.com/tarcisioandrade/rich-domain/compare/v1.0.0...v1.1.0) (2025-11-22)
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
### Features
|
|
9
9
|
|
|
10
|
-
*
|
|
10
|
+
* add examples in monorepo ([2cba30e](https://github.com/tarcisioandrade/rich-domain/commit/2cba30e318be2575b007c8b4f9a00e35561eec5e))
|
|
11
|
+
* add react-with-react-query example ([439589e](https://github.com/tarcisioandrade/rich-domain/commit/439589e1abbc47b1b03efab3b9dde53fe8d6253c))
|
|
12
|
+
* domain execeptions ([e206274](https://github.com/tarcisioandrade/rich-domain/commit/e206274d8a93c09cc91b2c0514be62cb986caaa3))
|
|
13
|
+
* implement useCriteria hook ([c00441a](https://github.com/tarcisioandrade/rich-domain/commit/c00441a105391fd06ef39b8c7e3aa0907c3ff508))
|
|
11
14
|
|
|
12
15
|
|
|
13
16
|
### Bug Fixes
|
|
14
17
|
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
### Chores
|
|
20
|
-
|
|
21
|
-
* update TypeScript configuration to use CommonJS module and Node resolution ([c3f39cd](https://github.com/tarcisioandrade/rich-domain/commit/c3f39cdd9cc2c76653197a8b7b6e8ec3fd794ecf))
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
### Tests
|
|
25
|
-
|
|
26
|
-
* update history tracker tests to include user property changes and post management ([29bdab1](https://github.com/tarcisioandrade/rich-domain/commit/29bdab14b7b43f32576a821851ba97618848ab7b))
|
|
18
|
+
* infinite loop when multiples order are add ([2c13dc4](https://github.com/tarcisioandrade/rich-domain/commit/2c13dc472d009bf328ad45222ea1c921f588ff9a))
|
|
19
|
+
* search not working in fromArray PaginatedResult method ([b79b2aa](https://github.com/tarcisioandrade/rich-domain/commit/b79b2aa2aa17e8b98bf2c2fcb4823452db99dcc1))
|
|
27
20
|
|
|
28
21
|
|
|
29
22
|
### Refactoring
|
|
30
23
|
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
### Features
|
|
39
|
-
|
|
40
|
-
* introduce Mapper class and refactor repository structure for improved abstraction and clarity ([f88538b](https://github.com/tarcisioandrade/rich-domain/commit/f88538bcde21dcd72714d24acdc7c8c38fb371f3))
|
|
24
|
+
* clean exports ([3f8e16a](https://github.com/tarcisioandrade/rich-domain/commit/3f8e16a2103514ef7a2a928dff20f674d1e39506))
|
|
25
|
+
* migrate eslint configuration to ES module syntax ([3ea4366](https://github.com/tarcisioandrade/rich-domain/commit/3ea43667b0857b7ae2afcbad858c16384035dc50))
|
|
26
|
+
* monorepo implementation ([e0b1e68](https://github.com/tarcisioandrade/rich-domain/commit/e0b1e683d5ee95b54b79510d43dd957af49c65e2))
|
|
27
|
+
* remove defaultValues from value objects ([0523479](https://github.com/tarcisioandrade/rich-domain/commit/0523479c6f272d7ea5d678638fa666e3fde71c7a))
|
|
28
|
+
* streamline domain event imports and consolidate IDomainEvent interface ([573c689](https://github.com/tarcisioandrade/rich-domain/commit/573c689a762baecd9fb8791e66300f663d7a58c1))
|
|
41
29
|
|
|
42
30
|
|
|
43
31
|
### Chores
|
|
44
32
|
|
|
45
|
-
*
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
* update
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
### Chores
|
|
56
|
-
|
|
57
|
-
* add ignoreDeprecations option to TypeScript configuration ([a66e528](https://github.com/tarcisioandrade/rich-domain/commit/a66e5289c33972f0449f9eb6d9e6fb85054888c4))
|
|
58
|
-
|
|
59
|
-
## [0.2.0](https://github.com/tarcisioandrade/rich-domain/compare/v0.1.0...v0.2.0) (2025-11-19)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
### Features
|
|
63
|
-
|
|
64
|
-
* add repository and unit of work modules with transaction management and clean exports ([83b652c](https://github.com/tarcisioandrade/rich-domain/commit/83b652cf751c2824799cfc961b282413ac7667f7))
|
|
65
|
-
* add search functionality to Criteria class with related methods ([1445e09](https://github.com/tarcisioandrade/rich-domain/commit/1445e092141c538766af39ec7de13421bf318393))
|
|
66
|
-
* implement abstract base repository and mapper for domain persistence ([f6b06ca](https://github.com/tarcisioandrade/rich-domain/commit/f6b06ca59292d9290e438717acaf2eaf361f63a7))
|
|
67
|
-
* implement criteria with filtering, ordering, and pagination ([bb42425](https://github.com/tarcisioandrade/rich-domain/commit/bb42425cc9e763ced350c3e6ee86954a5239cfb6))
|
|
68
|
-
* implement InMemoryRepository for testing with CRUD operations and criteria support ([a9d0cf6](https://github.com/tarcisioandrade/rich-domain/commit/a9d0cf63e68ab40d2944b6f26792ebfc456db176))
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
### Bug Fixes
|
|
72
|
-
|
|
73
|
-
* disable no-unsafe-function-type rule in ESLint configuration ([f185ed9](https://github.com/tarcisioandrade/rich-domain/commit/f185ed920eda8e1f1c205aed8d7f1091cd03fbee))
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
### Chores
|
|
77
|
-
|
|
78
|
-
* add coverage directory to .gitignore ([7a895f0](https://github.com/tarcisioandrade/rich-domain/commit/7a895f0ca777c27056f5bfd5adeed0b44049c60e))
|
|
79
|
-
* enhance Jest configuration and add coverage script to package.json ([d3b08d9](https://github.com/tarcisioandrade/rich-domain/commit/d3b08d97a4ecb650825e0b99d307203a5449ee96))
|
|
80
|
-
* update .gitignore to exclude example directories ([26c2d41](https://github.com/tarcisioandrade/rich-domain/commit/26c2d4140403877dabbd8a8b2b86250fa459f9b5))
|
|
81
|
-
* update version to 0.1.0 and add release scripts ([bb0aafa](https://github.com/tarcisioandrade/rich-domain/commit/bb0aafa85b5527d8ac3a582fcb75c489e7a4aa7a))
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
### Refactoring
|
|
85
|
-
|
|
86
|
-
* drop default values ([a7e130a](https://github.com/tarcisioandrade/rich-domain/commit/a7e130af3a7ece31bb7bdf38afd7e05ed724bf3c))
|
|
87
|
-
* move pagination logic to a new PaginatedResult class and update criteria tests ([96639e1](https://github.com/tarcisioandrade/rich-domain/commit/96639e15c9e7aa2794f7439741150d1a8b087d39))
|
|
88
|
-
* reorganize types and constants, introduce new criteria types ([170e93a](https://github.com/tarcisioandrade/rich-domain/commit/170e93a2b9f68c21e02818f87171df242018a130))
|
|
89
|
-
* update access modifiers and default values in BaseEntity and Criteria classes ([75cde9d](https://github.com/tarcisioandrade/rich-domain/commit/75cde9d162adc1ad8d142140186592c155415c2e))
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
### Documentation
|
|
93
|
-
|
|
94
|
-
* enhance README with new features ([0a49e63](https://github.com/tarcisioandrade/rich-domain/commit/0a49e6339bd36ae0c3193f8a3389906b139e56b3))
|
|
95
|
-
|
|
96
|
-
## 0.1.0 (2025-11-16)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
### Features
|
|
100
|
-
|
|
101
|
-
* domain-events implementation ([92384cc](https://github.com/tarcisioandrade/rich-domain/commit/92384cc4cc645ccb2a92ea9348491b05c7e34247))
|
|
102
|
-
* entity equality ([eb19399](https://github.com/tarcisioandrade/rich-domain/commit/eb19399375daaafb8aad850ba9cee590e6ddf11f))
|
|
103
|
-
* id class ([086d6b6](https://github.com/tarcisioandrade/rich-domain/commit/086d6b622041f03c70519e667c3d7b009c241c60))
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
### Refactoring
|
|
107
|
-
|
|
108
|
-
* Change property access in BaseEntity and related classes ([ceacca1](https://github.com/tarcisioandrade/rich-domain/commit/ceacca18b33d70a0d87119436c7b6180ddf61648))
|
|
109
|
-
* Remove Result class and related tests ([02fa29f](https://github.com/tarcisioandrade/rich-domain/commit/02fa29ff6bdad377c5c0737e9cec2dd2f36940af))
|
|
110
|
-
* Standardize quotes and remove obsolete test files ([2a38df7](https://github.com/tarcisioandrade/rich-domain/commit/2a38df7a88f418b63797dd32241284a52bdae3cf))
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
### Tests
|
|
114
|
-
|
|
115
|
-
* validation tests ([eb620a4](https://github.com/tarcisioandrade/rich-domain/commit/eb620a4aec22d2335a466f002f8659bf402ced74))
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
### Chores
|
|
119
|
-
|
|
120
|
-
* config ci and eslint ([88fba8f](https://github.com/tarcisioandrade/rich-domain/commit/88fba8fe51b0929cc55a649cfbf1e76d9bfb99b2))
|
|
121
|
-
* update CI node version matrix to only include 20.x ([9aecd60](https://github.com/tarcisioandrade/rich-domain/commit/9aecd6043dd391a2795e1209631b57d542c748da))
|
|
122
|
-
* update node engine requirement to >=20.0.0 ([213629c](https://github.com/tarcisioandrade/rich-domain/commit/213629cb64b3b85452f0364f802bb58bd4a757f8))
|
|
123
|
-
* update node engine requirement to >=22.0.0 ([1bad966](https://github.com/tarcisioandrade/rich-domain/commit/1bad966de395ff2b02dd0d7a4627aa725039b862))
|
|
33
|
+
* add postinstall script to generate Prisma client ([ffbe310](https://github.com/tarcisioandrade/rich-domain/commit/ffbe310db4ff9e6918d4e55096b8939c1f8f4543))
|
|
34
|
+
* enhance linting setup for react-rich-domain and update package.json ([ac2803b](https://github.com/tarcisioandrade/rich-domain/commit/ac2803bac0d907c0513d249fc5e14390418c7530))
|
|
35
|
+
* modify check script to target specific workspace ([d39d6d8](https://github.com/tarcisioandrade/rich-domain/commit/d39d6d8ef3a04d17207a3a0e795027040b3cf707))
|
|
36
|
+
* update clean script to remove node_modules in backend and rich-domain packages ([2a10cab](https://github.com/tarcisioandrade/rich-domain/commit/2a10cab193ba00e504a9a301cc00cda4b68b8573))
|
|
37
|
+
* update module entry points in package.json for react-rich-domain ([03be9ac](https://github.com/tarcisioandrade/rich-domain/commit/03be9aced05160c97eb74f771b770283c07e046b))
|
|
38
|
+
* update package configuration and add new dependencies ([4135393](https://github.com/tarcisioandrade/rich-domain/commit/4135393ae78b1b8e6b0c9306f0ac0872971ddb3f))
|
|
39
|
+
* update package.json scripts to target specific workspace ([8f46868](https://github.com/tarcisioandrade/rich-domain/commit/8f468688017f49cae58dff5d1a9818fe64b38017))
|
|
40
|
+
* update package.json with homepage and repository detail ([bfb387c](https://github.com/tarcisioandrade/rich-domain/commit/bfb387cb2076989a808f25be09337a24ed3a8ff6))
|
|
41
|
+
* update test script to target specific workspace ([6783208](https://github.com/tarcisioandrade/rich-domain/commit/678320803828a43ef588c366e59bf62c2851c126))
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 tarcisioandrade
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 tarcisioandrade
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
package/dist/base-entity.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Id } from "./id";
|
|
2
2
|
import { ValidationError } from "./validation-error";
|
|
3
|
-
import { IDomainEvent } from "
|
|
3
|
+
import { IDomainEvent } from ".";
|
|
4
4
|
import { BaseProps, SubscriptionConfig, HistoryEntry, DeepJsonResult, EntityHooks, EntityValidation } from "./types";
|
|
5
5
|
import { DomainEventBus } from "./domain-event-bus";
|
|
6
6
|
export declare abstract class BaseEntity<T extends BaseProps> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"base-entity.d.ts","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AACjC,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,WAAW,EAGX,gBAAgB,EACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAYpD,8BAAsB,UAAU,CAAC,CAAC,SAAS,SAAS;IAClD,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,WAAW,CAAC,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAG1C,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACpD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAEnC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG;QAAE,EAAE,CAAC,EAAE,EAAE,CAAA;KAAE;IAsD9C,OAAO,CAAC,aAAa;IA4BrB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,qBAAqB;IAuE7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAwDtB,IAAI,EAAE,IAAI,EAAE,CAEX;IAEM,KAAK,IAAI,OAAO;IAIvB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,GAAG,OAAO;IAuBnD,IAAW,KAAK,IAAI,CAAC,CAEpB;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,OAAO,CAEjC;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,eAAe,GAAG,SAAS,CAElD;IAED,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,IAAI;IAS9C,UAAU,IAAI,YAAY,EAAE;IAI5B,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,GAAG,EAAE,cAAc;IAI5C;;OAEG;IACH,oBAAoB,IAAI,YAAY,EAAE;IAItC;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC;IAI3B,OAAO,CAAC,UAAU;CAgBnB"}
|
package/dist/base-entity.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ============================================================================
|
|
3
2
|
// Base Entity Class with Standard Schema Validation
|
|
4
3
|
// ============================================================================
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const constants_1 = require("./constants");
|
|
4
|
+
import { Id } from "./id";
|
|
5
|
+
import { DeepProxy } from "./deep-proxy";
|
|
6
|
+
import { ValidationError } from "./validation-error";
|
|
7
|
+
import { DEFAULT_VALIDATION_CONFIG } from "./constants";
|
|
8
|
+
import { DomainError } from "./exceptions";
|
|
11
9
|
// Helper to get static properties from constructor
|
|
12
10
|
function getStaticProperty(instance, propertyName) {
|
|
13
11
|
return instance.constructor[propertyName];
|
|
14
12
|
}
|
|
15
|
-
class BaseEntity {
|
|
13
|
+
export class BaseEntity {
|
|
16
14
|
constructor(props) {
|
|
17
15
|
this.snapshot = null;
|
|
18
16
|
this.domainEvents = [];
|
|
@@ -24,21 +22,20 @@ class BaseEntity {
|
|
|
24
22
|
this.entitySchema = validation.schema;
|
|
25
23
|
}
|
|
26
24
|
this.validationConfig = {
|
|
27
|
-
...
|
|
25
|
+
...DEFAULT_VALIDATION_CONFIG,
|
|
28
26
|
...validation?.config,
|
|
29
27
|
};
|
|
30
|
-
// Apply defaultValues
|
|
31
28
|
let finalProps = { ...props };
|
|
32
29
|
// Generate ID if not provided
|
|
33
30
|
if (!finalProps.id) {
|
|
34
|
-
finalProps.id = new
|
|
31
|
+
finalProps.id = new Id();
|
|
35
32
|
}
|
|
36
33
|
// Validate schema on creation
|
|
37
34
|
if (this.entitySchema && this.validationConfig.onCreate) {
|
|
38
35
|
this.validateProps(finalProps);
|
|
39
36
|
}
|
|
40
37
|
this._props = finalProps;
|
|
41
|
-
this.proxy = new
|
|
38
|
+
this.proxy = new DeepProxy(this._props);
|
|
42
39
|
this.proxiedProps = this.proxy.createProxy();
|
|
43
40
|
// Execute rules (custom validations)
|
|
44
41
|
if (hooks?.rules) {
|
|
@@ -60,10 +57,10 @@ class BaseEntity {
|
|
|
60
57
|
return;
|
|
61
58
|
const result = this.entitySchema["~standard"].validate(props);
|
|
62
59
|
if (result instanceof Promise) {
|
|
63
|
-
throw new
|
|
60
|
+
throw new DomainError("Async validation not supported in constructor. Use sync validation schema.");
|
|
64
61
|
}
|
|
65
62
|
if (result.issues && result.issues.length > 0) {
|
|
66
|
-
const validationError = new
|
|
63
|
+
const validationError = new ValidationError(result.issues.map((issue) => ({
|
|
67
64
|
path: issue.path?.map((p) => this.extractPathKey(p)) || [],
|
|
68
65
|
message: issue.message,
|
|
69
66
|
})));
|
|
@@ -112,7 +109,7 @@ class BaseEntity {
|
|
|
112
109
|
return;
|
|
113
110
|
}
|
|
114
111
|
if (result.issues && result.issues.length > 0) {
|
|
115
|
-
const validationError = new
|
|
112
|
+
const validationError = new ValidationError(result.issues.map((issue) => ({
|
|
116
113
|
path: issue.path?.map((p) => self.extractPathKey(p)) || [],
|
|
117
114
|
message: issue.message,
|
|
118
115
|
})));
|
|
@@ -158,7 +155,7 @@ class BaseEntity {
|
|
|
158
155
|
if (typeof obj !== "object")
|
|
159
156
|
return obj;
|
|
160
157
|
// Special cases - don't clone these, just return the reference
|
|
161
|
-
if (obj instanceof
|
|
158
|
+
if (obj instanceof Id)
|
|
162
159
|
return obj;
|
|
163
160
|
if (obj instanceof Date)
|
|
164
161
|
return new Date(obj.getTime());
|
|
@@ -219,7 +216,7 @@ class BaseEntity {
|
|
|
219
216
|
return this.id.equals(other.id);
|
|
220
217
|
}
|
|
221
218
|
// Compare with an ID
|
|
222
|
-
if (other instanceof
|
|
219
|
+
if (other instanceof Id) {
|
|
223
220
|
return this.id.equals(other);
|
|
224
221
|
}
|
|
225
222
|
// Compare with a string ID
|
|
@@ -290,7 +287,7 @@ class BaseEntity {
|
|
|
290
287
|
deepToJson(obj) {
|
|
291
288
|
if (obj === null || obj === undefined)
|
|
292
289
|
return obj;
|
|
293
|
-
if (obj instanceof
|
|
290
|
+
if (obj instanceof Id)
|
|
294
291
|
return obj.value;
|
|
295
292
|
if (obj instanceof Date)
|
|
296
293
|
return obj.toISOString();
|
|
@@ -311,5 +308,4 @@ class BaseEntity {
|
|
|
311
308
|
return obj;
|
|
312
309
|
}
|
|
313
310
|
}
|
|
314
|
-
exports.BaseEntity = BaseEntity;
|
|
315
311
|
//# sourceMappingURL=base-entity.js.map
|
package/dist/base-entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base-entity.js","sourceRoot":"","sources":["../src/base-entity.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DEFAULT_VALIDATION_CONFIG = void 0;
|
|
4
|
-
exports.DEFAULT_VALIDATION_CONFIG = {
|
|
1
|
+
export const DEFAULT_VALIDATION_CONFIG = {
|
|
5
2
|
onCreate: true,
|
|
6
3
|
onUpdate: true,
|
|
7
4
|
throwOnError: true,
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yBAAyB,GAA+B;IACnE,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,IAAI;CACnB,CAAC"}
|
package/dist/criteria.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FieldPath, Filter, FilterOperator, FilterValueFor, Order, OrderDirection, Pagination, PathValue, TypedFilter } from "./types";
|
|
2
|
-
export declare class Criteria<T =
|
|
1
|
+
import { FieldPath, Filter, FilterOperator, FilterValueFor, Order, OrderDirection, Pagination, PathValue, Search, TypedFilter } from "./types";
|
|
2
|
+
export declare class Criteria<T = any> {
|
|
3
3
|
private _filters;
|
|
4
4
|
private _orders;
|
|
5
5
|
private _pagination;
|
|
@@ -8,7 +8,7 @@ export declare class Criteria<T = unknown> {
|
|
|
8
8
|
/**
|
|
9
9
|
* Create a new Criteria instance
|
|
10
10
|
*/
|
|
11
|
-
static create<T =
|
|
11
|
+
static create<T = any>(): Criteria<T>;
|
|
12
12
|
/**
|
|
13
13
|
* Add a filter condition
|
|
14
14
|
*/
|
|
@@ -24,10 +24,7 @@ export declare class Criteria<T = unknown> {
|
|
|
24
24
|
orderByDesc<K extends FieldPath<T>>(field: K): this;
|
|
25
25
|
search<K extends FieldPath<T>>(fields: K[], value: string): this;
|
|
26
26
|
hasSearch(): boolean;
|
|
27
|
-
getSearch():
|
|
28
|
-
fields: FieldPath<T>[];
|
|
29
|
-
value: string;
|
|
30
|
-
} | undefined;
|
|
27
|
+
getSearch(): Search<T> | undefined;
|
|
31
28
|
paginate(page: number, limit: number): this;
|
|
32
29
|
limit(limit: number): this;
|
|
33
30
|
getFilters(): Filter[];
|
|
@@ -41,10 +38,7 @@ export declare class Criteria<T = unknown> {
|
|
|
41
38
|
filters: Filter<FieldPath<T>, any>[];
|
|
42
39
|
orders: Order[];
|
|
43
40
|
pagination: Pagination;
|
|
44
|
-
search:
|
|
45
|
-
fields: FieldPath<T>[];
|
|
46
|
-
value: string;
|
|
47
|
-
} | undefined;
|
|
41
|
+
search: Search<T> | undefined;
|
|
48
42
|
};
|
|
49
43
|
static fromObject<T>(obj: {
|
|
50
44
|
filters?: TypedFilter<T>[];
|
package/dist/criteria.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"criteria.d.ts","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"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"}
|
package/dist/criteria.js
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.Criteria = void 0;
|
|
4
|
-
const types_1 = require("./types");
|
|
1
|
+
import { InvalidCriteriaError } from "./exceptions";
|
|
2
|
+
import { FILTER_OPERATORS, } from "./types";
|
|
5
3
|
// ============================================================================
|
|
6
4
|
// Filter Types
|
|
7
5
|
// ============================================================================
|
|
8
|
-
class Criteria {
|
|
6
|
+
export class Criteria {
|
|
9
7
|
constructor() {
|
|
10
8
|
this._filters = [];
|
|
11
9
|
this._orders = [];
|
|
@@ -158,7 +156,7 @@ class Criteria {
|
|
|
158
156
|
continue;
|
|
159
157
|
const operator = isOperator(operatorRaw) ? operatorRaw : null;
|
|
160
158
|
if (!operator)
|
|
161
|
-
throw new
|
|
159
|
+
throw new InvalidCriteriaError(`Invalid filter operator`, operatorRaw);
|
|
162
160
|
let parsedValue = value;
|
|
163
161
|
if (operator === "between") {
|
|
164
162
|
parsedValue = value
|
|
@@ -199,7 +197,6 @@ class Criteria {
|
|
|
199
197
|
return criteria;
|
|
200
198
|
}
|
|
201
199
|
}
|
|
202
|
-
exports.Criteria = Criteria;
|
|
203
200
|
// ============================================================================
|
|
204
201
|
// Helper Functions
|
|
205
202
|
// ============================================================================
|
|
@@ -213,6 +210,6 @@ function parseQueryValue(value) {
|
|
|
213
210
|
return value; // string
|
|
214
211
|
}
|
|
215
212
|
function isOperator(value) {
|
|
216
|
-
return
|
|
213
|
+
return FILTER_OPERATORS.includes(value);
|
|
217
214
|
}
|
|
218
215
|
//# sourceMappingURL=criteria.js.map
|
package/dist/criteria.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"criteria.js","sourceRoot":"","sources":["../src/criteria.ts"],"names":[],"mappings":"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"}
|
package/dist/deep-proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deep-proxy.d.ts","sourceRoot":"","sources":["../src/deep-proxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,SAAS;IAWlB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,SAAS,CAAC;IAZpB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,qBAAqB,CAAiC;IAC9D,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,oBAAoB,CAAyB;gBAG3C,MAAM,EAAE,GAAG,EACX,IAAI,GAAE,MAAW,EACjB,SAAS,CAAC,EAAE,SAAS,YAAA;IAK/B,WAAW,IAAI,GAAG;
|
|
1
|
+
{"version":3,"file":"deep-proxy.d.ts","sourceRoot":"","sources":["../src/deep-proxy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,SAAS;IAWlB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,SAAS,CAAC;IAZpB,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAyC;IAC5D,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,mBAAmB,CAAiC;IAC5D,OAAO,CAAC,qBAAqB,CAAiC;IAC9D,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,oBAAoB,CAAyB;gBAG3C,MAAM,EAAE,GAAG,EACX,IAAI,GAAE,MAAW,EACjB,SAAS,CAAC,EAAE,SAAS,YAAA;IAK/B,WAAW,IAAI,GAAG;IA8FlB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IA8ExB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA4DjD,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAanD,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,qBAAqB;IAsB7B,UAAU,IAAI,YAAY,EAAE;IAI5B,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAS5D,YAAY,IAAI,IAAI;IAOpB,SAAS,IAAI,GAAG;CAGjB"}
|
package/dist/deep-proxy.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// ============================================================================
|
|
3
2
|
// Deep Proxy - Core Change Tracking
|
|
4
3
|
// ============================================================================
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const id_1 = require("./id");
|
|
8
|
-
class DeepProxy {
|
|
4
|
+
import { Id } from "./id";
|
|
5
|
+
export class DeepProxy {
|
|
9
6
|
constructor(target, path = "", rootProxy) {
|
|
10
7
|
this.target = target;
|
|
11
8
|
this.path = path;
|
|
@@ -25,6 +22,8 @@ class DeepProxy {
|
|
|
25
22
|
const handler = {
|
|
26
23
|
get: (target, prop, receiver) => {
|
|
27
24
|
const value = Reflect.get(target, prop, receiver);
|
|
25
|
+
if (!this.rootProxy)
|
|
26
|
+
throw new Error("Root proxy is required");
|
|
28
27
|
const currentPath = this.path
|
|
29
28
|
? `${this.path}.${String(prop)}`
|
|
30
29
|
: String(prop);
|
|
@@ -53,6 +52,8 @@ class DeepProxy {
|
|
|
53
52
|
const currentPath = this.path
|
|
54
53
|
? `${this.path}.${String(prop)}`
|
|
55
54
|
: String(prop);
|
|
55
|
+
if (!this.rootProxy)
|
|
56
|
+
throw new Error("Root proxy is required");
|
|
56
57
|
const oldValue = Reflect.get(target, prop, receiver);
|
|
57
58
|
const isArrayAssignment = Array.isArray(newValue);
|
|
58
59
|
if (!isArrayAssignment && oldValue === newValue)
|
|
@@ -116,6 +117,8 @@ class DeepProxy {
|
|
|
116
117
|
return new Proxy(array, {
|
|
117
118
|
get(target, prop, receiver) {
|
|
118
119
|
const value = Reflect.get(target, prop, receiver);
|
|
120
|
+
if (!self.rootProxy)
|
|
121
|
+
throw new Error("Root proxy is required");
|
|
119
122
|
if (typeof value === "function") {
|
|
120
123
|
const mutatingMethods = [
|
|
121
124
|
"push",
|
|
@@ -129,6 +132,8 @@ class DeepProxy {
|
|
|
129
132
|
if (mutatingMethods.includes(String(prop))) {
|
|
130
133
|
return function (...args) {
|
|
131
134
|
// Capture state before mutation
|
|
135
|
+
if (!self.rootProxy)
|
|
136
|
+
throw new Error("Root proxy is required");
|
|
132
137
|
const oldArray = target.slice();
|
|
133
138
|
const result = value.apply(target, args);
|
|
134
139
|
// Add to history
|
|
@@ -157,6 +162,8 @@ class DeepProxy {
|
|
|
157
162
|
},
|
|
158
163
|
set(target, prop, newValue, receiver) {
|
|
159
164
|
if (!isNaN(Number(prop))) {
|
|
165
|
+
if (!self.rootProxy)
|
|
166
|
+
throw new Error("Root proxy is required");
|
|
160
167
|
// Capture state before change
|
|
161
168
|
const oldArray = target.slice();
|
|
162
169
|
const result = Reflect.set(target, prop, newValue, receiver);
|
|
@@ -179,6 +186,8 @@ class DeepProxy {
|
|
|
179
186
|
});
|
|
180
187
|
}
|
|
181
188
|
subscribe(path, callback) {
|
|
189
|
+
if (!this.rootProxy)
|
|
190
|
+
throw new Error("Root proxy is required");
|
|
182
191
|
if (path === "*") {
|
|
183
192
|
this.rootProxy.globalSubscribers.add(callback);
|
|
184
193
|
return;
|
|
@@ -226,6 +235,8 @@ class DeepProxy {
|
|
|
226
235
|
}
|
|
227
236
|
}
|
|
228
237
|
unsubscribe(path, callback) {
|
|
238
|
+
if (!this.rootProxy)
|
|
239
|
+
throw new Error("Root proxy is required");
|
|
229
240
|
if (path === "*") {
|
|
230
241
|
this.rootProxy.globalSubscribers.delete(callback);
|
|
231
242
|
return;
|
|
@@ -303,7 +314,7 @@ class DeepProxy {
|
|
|
303
314
|
return obj;
|
|
304
315
|
if (obj instanceof Date)
|
|
305
316
|
return new Date(obj.getTime());
|
|
306
|
-
if (obj instanceof
|
|
317
|
+
if (obj instanceof Id)
|
|
307
318
|
return obj.value;
|
|
308
319
|
if (obj.toJson && typeof obj.toJson === "function")
|
|
309
320
|
return obj.toJson();
|
|
@@ -319,13 +330,13 @@ class DeepProxy {
|
|
|
319
330
|
getItemId(item) {
|
|
320
331
|
if (!item)
|
|
321
332
|
return undefined;
|
|
322
|
-
if (item.id instanceof
|
|
333
|
+
if (item.id instanceof Id)
|
|
323
334
|
return item.id.value;
|
|
324
335
|
if (item.id !== undefined)
|
|
325
336
|
return String(item.id);
|
|
326
337
|
if (typeof item === "object" && "id" in item) {
|
|
327
338
|
const id = item.id;
|
|
328
|
-
return id instanceof
|
|
339
|
+
return id instanceof Id ? id.value : String(id);
|
|
329
340
|
}
|
|
330
341
|
return undefined;
|
|
331
342
|
}
|
|
@@ -370,5 +381,4 @@ class DeepProxy {
|
|
|
370
381
|
return this.target;
|
|
371
382
|
}
|
|
372
383
|
}
|
|
373
|
-
exports.DeepProxy = DeepProxy;
|
|
374
384
|
//# sourceMappingURL=deep-proxy.js.map
|