@archtx/core 1.1.4 → 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/dist/exports.d.ts +1 -0
- package/dist/exports.js +1 -0
- package/dist/exports.js.map +1 -1
- package/dist/src/Entity.benchmark.test.d.ts +1 -0
- package/dist/src/Entity.benchmark.test.js +283 -0
- package/dist/src/Entity.benchmark.test.js.map +1 -0
- package/dist/src/Entity.d.ts +20 -4
- package/dist/src/Entity.js +224 -3
- package/dist/src/Entity.js.map +1 -1
- package/dist/src/Entity.test.d.ts +1 -0
- package/dist/src/Entity.test.js +238 -0
- package/dist/src/Entity.test.js.map +1 -0
- package/dist/src/UseCase.d.ts +5 -0
- package/dist/src/UseCase.js +7 -0
- package/dist/src/UseCase.js.map +1 -0
- package/dist/src/common-types.d.ts +6 -0
- package/dist/src/errors/errors.test.js +1 -1
- package/dist/src/errors/errors.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +8 -4
- package/dist/src/IUseCase.d.ts +0 -3
- package/dist/src/IUseCase.js +0 -2
- package/dist/src/IUseCase.js.map +0 -1
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { describe, it, expect, afterEach } from 'vitest';
|
|
2
|
+
import { Entity } from './Entity';
|
|
3
|
+
describe('Entity', () => {
|
|
4
|
+
afterEach(() => {
|
|
5
|
+
process.env.NODE_ENV = 'development';
|
|
6
|
+
});
|
|
7
|
+
describe('Initialization', () => {
|
|
8
|
+
it('should initialize with props', () => {
|
|
9
|
+
class Profile extends Entity {
|
|
10
|
+
static create(props) {
|
|
11
|
+
return new Profile(props);
|
|
12
|
+
}
|
|
13
|
+
validate() {
|
|
14
|
+
if (this.props.name.length === 0) {
|
|
15
|
+
throw new Error('Name cannot be empty');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
20
|
+
expect(profile.props).toEqual({ id: '123', name: 'Test' });
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('Props Immutability', () => {
|
|
24
|
+
it('should make props immutable in development mode', () => {
|
|
25
|
+
class Profile extends Entity {
|
|
26
|
+
static create(props) {
|
|
27
|
+
return new Profile({
|
|
28
|
+
...props,
|
|
29
|
+
tags: props.tags || [],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
validate() {
|
|
33
|
+
if (this.props.name.length === 0) {
|
|
34
|
+
throw new Error('Name cannot be empty');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
39
|
+
// Direct modification attempts should throw errors in strict mode
|
|
40
|
+
expect(() => {
|
|
41
|
+
// @ts-expect-error - Intentionally trying to modify readonly property
|
|
42
|
+
profile.props.name = 'Modified';
|
|
43
|
+
}).toThrow();
|
|
44
|
+
expect(() => {
|
|
45
|
+
// @ts-expect-error - Intentionally trying to modify readonly property
|
|
46
|
+
profile.props.tags.push('tag3');
|
|
47
|
+
}).toThrow();
|
|
48
|
+
expect(() => {
|
|
49
|
+
// @ts-expect-error - Intentionally trying to modify readonly property
|
|
50
|
+
profile.props.metadata.email = 'cory@therms.io';
|
|
51
|
+
}).toThrow();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe('set() method', () => {
|
|
55
|
+
it('should not allow setting the ID property', () => {
|
|
56
|
+
class Profile extends Entity {
|
|
57
|
+
static create(props) {
|
|
58
|
+
return new Profile(props);
|
|
59
|
+
}
|
|
60
|
+
validate() {
|
|
61
|
+
if (this.props.name.length === 0) {
|
|
62
|
+
throw new Error('Name cannot be empty');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
67
|
+
expect(() => {
|
|
68
|
+
// @ts-expect-error - Intentionally trying to set ID
|
|
69
|
+
profile.set('id', '456');
|
|
70
|
+
}).toThrow('Cannot set ID');
|
|
71
|
+
});
|
|
72
|
+
it('should update a property value', () => {
|
|
73
|
+
class Profile extends Entity {
|
|
74
|
+
static create(props) {
|
|
75
|
+
return new Profile({
|
|
76
|
+
...props,
|
|
77
|
+
tags: props.tags || [],
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
validate() {
|
|
81
|
+
if (this.props.name.length === 0) {
|
|
82
|
+
throw new Error('Name cannot be empty');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
87
|
+
profile.set('name', 'Updated');
|
|
88
|
+
expect(profile.props.name).toBe('Updated');
|
|
89
|
+
});
|
|
90
|
+
it('should allow null/undefined values', () => {
|
|
91
|
+
class Profile extends Entity {
|
|
92
|
+
static create(props) {
|
|
93
|
+
return new Profile(props);
|
|
94
|
+
}
|
|
95
|
+
validate() {
|
|
96
|
+
if (this.props.name.length === 0) {
|
|
97
|
+
throw new Error('Name cannot be empty');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
102
|
+
profile.set('maybe', null);
|
|
103
|
+
expect(profile.props.maybe).toBe(null);
|
|
104
|
+
profile.set('maybe', undefined);
|
|
105
|
+
expect(profile.props.maybe).toBe(undefined);
|
|
106
|
+
profile.set('maybe', 'value');
|
|
107
|
+
expect(profile.props.maybe).toBe('value');
|
|
108
|
+
});
|
|
109
|
+
it('should create a new reference when updating props', () => {
|
|
110
|
+
class Profile extends Entity {
|
|
111
|
+
static create(props) {
|
|
112
|
+
return new Profile({
|
|
113
|
+
...props,
|
|
114
|
+
tags: props.tags || [],
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
validate() {
|
|
118
|
+
if (this.props.name.length === 0) {
|
|
119
|
+
throw new Error('Name cannot be empty');
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
124
|
+
const originalProps = profile.props;
|
|
125
|
+
profile.set('name', 'Updated');
|
|
126
|
+
// Reference should be different
|
|
127
|
+
expect(profile.props).not.toBe(originalProps);
|
|
128
|
+
});
|
|
129
|
+
it('should deeply clone objects when updating', () => {
|
|
130
|
+
const date = new Date();
|
|
131
|
+
class Profile extends Entity {
|
|
132
|
+
static create(props) {
|
|
133
|
+
return new Profile({
|
|
134
|
+
...props,
|
|
135
|
+
tags: props.tags || [],
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
validate() {
|
|
139
|
+
if (this.props.name.length === 0) {
|
|
140
|
+
throw new Error('Name cannot be empty');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
145
|
+
const newMetadata = {
|
|
146
|
+
createdAt: date,
|
|
147
|
+
updatedAt: new Date(),
|
|
148
|
+
nested: {
|
|
149
|
+
value: 100,
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
profile.set('metadata', newMetadata);
|
|
153
|
+
// Modify the original object
|
|
154
|
+
expect(() => {
|
|
155
|
+
newMetadata.nested.value = 200;
|
|
156
|
+
}).toThrow();
|
|
157
|
+
// Entity props should have the original value
|
|
158
|
+
expect(profile.props.metadata?.nested?.value).toBe(100);
|
|
159
|
+
});
|
|
160
|
+
it('should deeply clone arrays when updating', () => {
|
|
161
|
+
class Profile extends Entity {
|
|
162
|
+
static create(props) {
|
|
163
|
+
return new Profile({
|
|
164
|
+
...props,
|
|
165
|
+
tags: props.tags || [],
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
validate() {
|
|
169
|
+
if (this.props.name.length === 0) {
|
|
170
|
+
throw new Error('Name cannot be empty');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const tags = ['tag1', 'tag2'];
|
|
175
|
+
const profile = Profile.create({ id: '123', name: 'Test', tags });
|
|
176
|
+
// Modify the original array
|
|
177
|
+
expect(() => { tags.push('tag3'); }).toThrow;
|
|
178
|
+
expect(() => { tags[0] = 'tag4'; }).toThrow;
|
|
179
|
+
// Entity props should have the original value
|
|
180
|
+
expect(profile.props.tags.length).toBe(2);
|
|
181
|
+
expect(profile.props.tags[0]).toBe('tag1');
|
|
182
|
+
profile.set('tags', [...profile.props.tags, 'tag5', 'tag6']);
|
|
183
|
+
// Entity props should have the new value
|
|
184
|
+
expect(profile.props.tags.length).toBe(4);
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
describe('Validation', () => {
|
|
188
|
+
it('should validate properties when setting values', () => {
|
|
189
|
+
class Profile extends Entity {
|
|
190
|
+
static create(props) {
|
|
191
|
+
return new Profile({
|
|
192
|
+
...props,
|
|
193
|
+
tags: props.tags || [],
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
validate(props) {
|
|
197
|
+
if (props.name.length === 0) {
|
|
198
|
+
throw new Error('Name cannot be empty');
|
|
199
|
+
}
|
|
200
|
+
if (!props.tags) {
|
|
201
|
+
throw new Error('Tags cannot be empty');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
206
|
+
// These should pass validation
|
|
207
|
+
expect(() => profile.set('name', 'Valid name')).not.toThrow();
|
|
208
|
+
expect(() => profile.set('tags', ['1', '2'])).not.toThrow();
|
|
209
|
+
// These should fail validation
|
|
210
|
+
expect(() => profile.set('name', '')).toThrow('Name cannot be empty');
|
|
211
|
+
// @ts-expect-error - Intentionally passing undefined
|
|
212
|
+
expect(() => profile.set('tags', undefined)).toThrow('Tags cannot be empty');
|
|
213
|
+
});
|
|
214
|
+
it('should not update props if validation fails', () => {
|
|
215
|
+
class Profile extends Entity {
|
|
216
|
+
static create(props) {
|
|
217
|
+
return new Profile(props);
|
|
218
|
+
}
|
|
219
|
+
validate(props) {
|
|
220
|
+
if (props.name.length === 0) {
|
|
221
|
+
throw new Error('Name cannot be empty');
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const profile = Profile.create({ id: '123', name: 'Test' });
|
|
226
|
+
// Try to set an invalid value
|
|
227
|
+
try {
|
|
228
|
+
profile.set('name', '');
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
// Ignore the error
|
|
232
|
+
}
|
|
233
|
+
// Props should not be updated
|
|
234
|
+
expect(profile.props.name).toBe('Test');
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
});
|
|
238
|
+
//# sourceMappingURL=Entity.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Entity.test.js","sourceRoot":"","sources":["../../src/Entity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UseCase.js","sourceRoot":"","sources":["../../src/UseCase.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,OAAO;IAEf;IADZ,YACY,QAAkB,EAC5B,GAAG,IAAS;QADF,aAAQ,GAAR,QAAQ,CAAU;IAE3B,CAAC;CAGL"}
|
|
@@ -9,3 +9,9 @@ export type IWithID<DataModel extends object = object> = DataModel & {
|
|
|
9
9
|
*/
|
|
10
10
|
export type TISODateString = string;
|
|
11
11
|
export type TUUID = string;
|
|
12
|
+
/**
|
|
13
|
+
* Utility types
|
|
14
|
+
*/
|
|
15
|
+
export type DeepReadonly<T> = T extends Array<infer U> ? ReadonlyArray<DeepReadonly<U>> : T extends object ? {
|
|
16
|
+
readonly [P in keyof T]: DeepReadonly<T[P]>;
|
|
17
|
+
} : T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../../src/errors/errors.test.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../../src/errors/errors.test.ts"],"names":[],"mappings":"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"}
|