@furystack/repository 10.1.11 → 11.0.1
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 -0
- package/README.md +74 -36
- package/esm/data-set-setting.d.ts +30 -44
- package/esm/data-set-setting.d.ts.map +1 -1
- package/esm/data-set.d.ts +17 -68
- package/esm/data-set.d.ts.map +1 -1
- package/esm/data-set.js +18 -69
- package/esm/data-set.js.map +1 -1
- package/esm/data-set.spec.d.ts +2 -0
- package/esm/data-set.spec.d.ts.map +1 -0
- package/esm/data-set.spec.js +348 -0
- package/esm/data-set.spec.js.map +1 -0
- package/esm/define-data-set.d.ts +71 -0
- package/esm/define-data-set.d.ts.map +1 -0
- package/esm/define-data-set.js +65 -0
- package/esm/define-data-set.js.map +1 -0
- package/esm/define-data-set.spec.d.ts +2 -0
- package/esm/define-data-set.spec.d.ts.map +1 -0
- package/esm/define-data-set.spec.js +134 -0
- package/esm/define-data-set.spec.js.map +1 -0
- package/esm/helpers.d.ts +12 -29
- package/esm/helpers.d.ts.map +1 -1
- package/esm/helpers.js +8 -28
- package/esm/helpers.js.map +1 -1
- package/esm/index.d.ts +2 -2
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -2
- package/esm/index.js.map +1 -1
- package/package.json +5 -5
- package/src/data-set-setting.ts +32 -46
- package/src/data-set.spec.ts +397 -0
- package/src/data-set.ts +28 -72
- package/src/define-data-set.spec.ts +145 -0
- package/src/define-data-set.ts +122 -0
- package/src/helpers.ts +14 -33
- package/src/index.ts +2 -2
- package/esm/dataset.spec.d.ts +0 -2
- package/esm/dataset.spec.d.ts.map +0 -1
- package/esm/dataset.spec.js +0 -552
- package/esm/dataset.spec.js.map +0 -1
- package/esm/repository.d.ts +0 -15
- package/esm/repository.d.ts.map +0 -1
- package/esm/repository.js +0 -50
- package/esm/repository.js.map +0 -1
- package/esm/repository.spec.d.ts +0 -2
- package/esm/repository.spec.d.ts.map +0 -1
- package/esm/repository.spec.js +0 -18
- package/esm/repository.spec.js.map +0 -1
- package/src/dataset.spec.ts +0 -641
- package/src/repository.spec.ts +0 -19
- package/src/repository.ts +0 -50
package/esm/dataset.spec.js
DELETED
|
@@ -1,552 +0,0 @@
|
|
|
1
|
-
import { AuthorizationError, InMemoryStore, addStore } from '@furystack/core';
|
|
2
|
-
import { Injector } from '@furystack/inject';
|
|
3
|
-
import { usingAsync } from '@furystack/utils';
|
|
4
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
5
|
-
import { getDataSetFor, getRepository } from './helpers.js';
|
|
6
|
-
import { Repository } from './repository.js';
|
|
7
|
-
class TestClass {
|
|
8
|
-
id = 1;
|
|
9
|
-
value = '';
|
|
10
|
-
}
|
|
11
|
-
describe('DataSet', () => {
|
|
12
|
-
describe('Construction', () => {
|
|
13
|
-
it('can be retrieved from an extension method with class', async () => {
|
|
14
|
-
await usingAsync(new Injector(), async (i) => {
|
|
15
|
-
addStore(i, new InMemoryStore({
|
|
16
|
-
model: TestClass,
|
|
17
|
-
primaryKey: 'id',
|
|
18
|
-
}));
|
|
19
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
20
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
21
|
-
expect(dataSet.settings.physicalStore.model).toBe(TestClass);
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
it('can be retrieved from an extension method with string', async () => {
|
|
25
|
-
await usingAsync(new Injector(), async (i) => {
|
|
26
|
-
addStore(i, new InMemoryStore({
|
|
27
|
-
model: TestClass,
|
|
28
|
-
primaryKey: 'id',
|
|
29
|
-
}));
|
|
30
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
31
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
32
|
-
expect(dataSet.settings.physicalStore.model).toBe(TestClass);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
it('Should throw if dataset is not registered through extension', async () => {
|
|
36
|
-
await usingAsync(new Injector(), async (i) => {
|
|
37
|
-
expect(() => getDataSetFor(i, TestClass, 'id')).toThrow(/No DataSet found for 'class TestClass/);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
it('Should throw if dataset is not registered through service', async () => {
|
|
41
|
-
await usingAsync(new Injector(), async (i) => {
|
|
42
|
-
expect(() => i.getInstance(Repository).getDataSetFor(TestClass, 'id')).toThrowError(/No DataSet found for 'class TestClass/);
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
it('Should throw error on mismatched primary key', async () => {
|
|
46
|
-
await usingAsync(new Injector(), async (i) => {
|
|
47
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
48
|
-
getRepository(i).createDataSet(TestClass, 'id', {});
|
|
49
|
-
expect(() => getDataSetFor(i, TestClass, 'name')).toThrowError();
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
describe('Authorizers', () => {
|
|
54
|
-
describe('Add', () => {
|
|
55
|
-
it('should add an entity if no settings are provided', async () => {
|
|
56
|
-
await usingAsync(new Injector(), async (i) => {
|
|
57
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
58
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
59
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
60
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
61
|
-
const result = await dataSet.get(i, 1);
|
|
62
|
-
expect(result && result.value).toBe('asd');
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
it('should call the add async authorizer and add the entity on pass', async () => {
|
|
66
|
-
await usingAsync(new Injector(), async (i) => {
|
|
67
|
-
const authorizeAdd = vi.fn(async () => ({ isAllowed: true }));
|
|
68
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
69
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeAdd });
|
|
70
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
71
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
72
|
-
expect(authorizeAdd).toBeCalled();
|
|
73
|
-
const added = await dataSet.get(i, 1);
|
|
74
|
-
expect(added && added.value).toBe('asd');
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
it('should throw if the add authorizer returns a non-valid result and should not add a value to the store', async () => {
|
|
78
|
-
await usingAsync(new Injector(), async (i) => {
|
|
79
|
-
const authorizeAdd = vi.fn(async () => ({ isAllowed: false, message: '...' }));
|
|
80
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
81
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeAdd });
|
|
82
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
83
|
-
try {
|
|
84
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
85
|
-
throw Error('Should throw');
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
/** */
|
|
89
|
-
expect(authorizeAdd).toBeCalled();
|
|
90
|
-
const added = await dataSet.get(i, 1);
|
|
91
|
-
expect(added).toBeUndefined();
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
it('should modify an entity on add, if modifyOnAdd is provided', async () => {
|
|
96
|
-
await usingAsync(new Injector(), async (i) => {
|
|
97
|
-
const modifyOnAdd = vi.fn(async (options) => ({
|
|
98
|
-
...options.entity,
|
|
99
|
-
value: options.entity.value.toUpperCase(),
|
|
100
|
-
}));
|
|
101
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
102
|
-
getRepository(i).createDataSet(TestClass, 'id', { modifyOnAdd });
|
|
103
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
104
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
105
|
-
const result = await dataSet.get(i, 1);
|
|
106
|
-
expect(modifyOnAdd).toBeCalled();
|
|
107
|
-
expect(result && result.value).toBe('ASD');
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
it('should call the onEntityAdded callback if an entity has been added', async () => {
|
|
111
|
-
await usingAsync(new Injector(), async (i) => {
|
|
112
|
-
expect.assertions(1);
|
|
113
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
114
|
-
getRepository(i).createDataSet(TestClass, 'id', {});
|
|
115
|
-
getRepository(i)
|
|
116
|
-
.getDataSetFor(TestClass, 'id')
|
|
117
|
-
.subscribe('onEntityAdded', ({ entity }) => {
|
|
118
|
-
expect(entity.value).toBe('asd');
|
|
119
|
-
});
|
|
120
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
121
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
describe('Update', () => {
|
|
126
|
-
it('should update an entity if no settings are provided', async () => {
|
|
127
|
-
await usingAsync(new Injector(), async (i) => {
|
|
128
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
129
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
130
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
131
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
132
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
133
|
-
const result = await dataSet.get(i, 1);
|
|
134
|
-
expect(result && result.value).toBe('asd2');
|
|
135
|
-
});
|
|
136
|
-
});
|
|
137
|
-
it('should call the authorizeUpdate authorizer and add the entity on pass', async () => {
|
|
138
|
-
await usingAsync(new Injector(), async (i) => {
|
|
139
|
-
const authorizeUpdate = vi.fn(async () => ({ isAllowed: true }));
|
|
140
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
141
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdate });
|
|
142
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
143
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
144
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
145
|
-
expect(authorizeUpdate).toBeCalled();
|
|
146
|
-
const added = await dataSet.get(i, 1);
|
|
147
|
-
expect(added && added.value).toBe('asd2');
|
|
148
|
-
});
|
|
149
|
-
});
|
|
150
|
-
it('should throw if the authorizeUpdateEntity returns a non-valid result and should not update a value to the store', async () => {
|
|
151
|
-
await usingAsync(new Injector(), async (i) => {
|
|
152
|
-
const authorizeUpdateEntity = vi.fn(async () => ({ isAllowed: false, message: '...' }));
|
|
153
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
154
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdateEntity });
|
|
155
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
156
|
-
try {
|
|
157
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
158
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
159
|
-
throw Error('Should throw');
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
/** */
|
|
163
|
-
expect(authorizeUpdateEntity).toBeCalled();
|
|
164
|
-
const added = await dataSet.get(i, 1);
|
|
165
|
-
expect(added && added.value).toBe('asd');
|
|
166
|
-
}
|
|
167
|
-
});
|
|
168
|
-
});
|
|
169
|
-
it('should call the authorizeUpdateEntity authorizer and add the entity on pass', async () => {
|
|
170
|
-
await usingAsync(new Injector(), async (i) => {
|
|
171
|
-
const authorizeUpdateEntity = vi.fn(async () => ({ isAllowed: true }));
|
|
172
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
173
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdateEntity });
|
|
174
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
175
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
176
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
177
|
-
expect(authorizeUpdateEntity).toBeCalled();
|
|
178
|
-
const added = await dataSet.get(i, 1);
|
|
179
|
-
expect(added && added.value).toBe('asd2');
|
|
180
|
-
});
|
|
181
|
-
});
|
|
182
|
-
it('should throw if the authorizeUpdate returns a non-valid result and should not update a value to the store', async () => {
|
|
183
|
-
await usingAsync(new Injector(), async (i) => {
|
|
184
|
-
const authorizeUpdate = vi.fn(async () => ({ isAllowed: false, message: '...' }));
|
|
185
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
186
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeUpdate });
|
|
187
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
188
|
-
try {
|
|
189
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
190
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
191
|
-
throw Error('Should throw');
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
/** */
|
|
195
|
-
expect(authorizeUpdate).toBeCalled();
|
|
196
|
-
const added = await dataSet.get(i, 1);
|
|
197
|
-
expect(added && added.value).toBe('asd');
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
it('should modify an entity on update, if modifyOnAdd is provided', async () => {
|
|
202
|
-
await usingAsync(new Injector(), async (i) => {
|
|
203
|
-
const modifyOnUpdate = vi.fn(async (options) => ({
|
|
204
|
-
...options.entity,
|
|
205
|
-
value: options.entity.value?.toUpperCase(),
|
|
206
|
-
}));
|
|
207
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
208
|
-
getRepository(i).createDataSet(TestClass, 'id', { modifyOnUpdate });
|
|
209
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
210
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
211
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
212
|
-
const result = await dataSet.get(i, 1);
|
|
213
|
-
expect(modifyOnUpdate).toBeCalled();
|
|
214
|
-
expect(result && result.value).toBe('ASD2');
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
it('should publish to the onEntityUpdated observable if an entity has been updated', async () => {
|
|
218
|
-
await usingAsync(new Injector(), async (i) => {
|
|
219
|
-
expect.assertions(1);
|
|
220
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
221
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
222
|
-
getRepository(i)
|
|
223
|
-
.getDataSetFor(TestClass, 'id')
|
|
224
|
-
.subscribe('onEntityUpdated', ({ change }) => {
|
|
225
|
-
expect(change).toEqual({ id: 1, value: 'asd2' });
|
|
226
|
-
});
|
|
227
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
228
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
229
|
-
await dataSet.update(i, 1, { id: 1, value: 'asd2' });
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
});
|
|
233
|
-
describe('Count', () => {
|
|
234
|
-
it('should return the count if no settings are provided', async () => {
|
|
235
|
-
await usingAsync(new Injector(), async (i) => {
|
|
236
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
237
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
238
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
239
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
240
|
-
const result = await dataSet.count(i);
|
|
241
|
-
expect(result).toBe(1);
|
|
242
|
-
});
|
|
243
|
-
});
|
|
244
|
-
it('should return the count if authorizeGet returns valid result', async () => {
|
|
245
|
-
await usingAsync(new Injector(), async (i) => {
|
|
246
|
-
const authorizeGet = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
247
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
248
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
249
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
250
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
251
|
-
const result = await dataSet.count(i);
|
|
252
|
-
expect(result).toBe(1);
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
it('should throw if authorizeGet returns invalid result', async () => {
|
|
256
|
-
await usingAsync(new Injector(), async (i) => {
|
|
257
|
-
const authorizeGet = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
258
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
259
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
260
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
261
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
262
|
-
try {
|
|
263
|
-
await dataSet.count(i);
|
|
264
|
-
throw Error('Should throw');
|
|
265
|
-
}
|
|
266
|
-
catch (error) {
|
|
267
|
-
/** */
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
});
|
|
273
|
-
describe('filter', () => {
|
|
274
|
-
it('should return the unfiltered result if no settings are provided', async () => {
|
|
275
|
-
await usingAsync(new Injector(), async (i) => {
|
|
276
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
277
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
278
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
279
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
280
|
-
const result = await dataSet.find(i, {});
|
|
281
|
-
expect(result.length).toBe(1);
|
|
282
|
-
});
|
|
283
|
-
});
|
|
284
|
-
it('should return the unfiltered result if authorizeGet returns valid result', async () => {
|
|
285
|
-
await usingAsync(new Injector(), async (i) => {
|
|
286
|
-
const authorizeGet = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
287
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
288
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
289
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
290
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
291
|
-
const result = await dataSet.find(i, {});
|
|
292
|
-
expect(result.length).toBe(1);
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
it('should throw if authorizeGet returns invalid result', async () => {
|
|
296
|
-
await usingAsync(new Injector(), async (i) => {
|
|
297
|
-
const authorizeGet = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
298
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
299
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
300
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
301
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
302
|
-
try {
|
|
303
|
-
await dataSet.find(i, {});
|
|
304
|
-
throw Error('Should throw');
|
|
305
|
-
}
|
|
306
|
-
catch (error) {
|
|
307
|
-
/** */
|
|
308
|
-
}
|
|
309
|
-
});
|
|
310
|
-
});
|
|
311
|
-
});
|
|
312
|
-
describe('get', () => {
|
|
313
|
-
it('should return the entity if no settings are provided', async () => {
|
|
314
|
-
await usingAsync(new Injector(), async (i) => {
|
|
315
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
316
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
317
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
318
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
319
|
-
const result = await dataSet.get(i, 1);
|
|
320
|
-
expect(result && result.id).toBe(1);
|
|
321
|
-
});
|
|
322
|
-
});
|
|
323
|
-
it('should return the entity if authorizeGet returns valid result', async () => {
|
|
324
|
-
await usingAsync(new Injector(), async (i) => {
|
|
325
|
-
const authorizeGet = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
326
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
327
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
328
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
329
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
330
|
-
const result = await dataSet.get(i, 1);
|
|
331
|
-
expect(result && result.id).toBe(1);
|
|
332
|
-
});
|
|
333
|
-
});
|
|
334
|
-
it('should throw if authorizeGet returns invalid result', async () => {
|
|
335
|
-
await usingAsync(new Injector(), async (i) => {
|
|
336
|
-
const authorizeGet = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
337
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
338
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGet });
|
|
339
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
340
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
341
|
-
try {
|
|
342
|
-
await dataSet.get(i, 1);
|
|
343
|
-
throw Error('Should throw');
|
|
344
|
-
}
|
|
345
|
-
catch (error) {
|
|
346
|
-
/** */
|
|
347
|
-
}
|
|
348
|
-
});
|
|
349
|
-
});
|
|
350
|
-
it('should return the entity if authorizeGetEntity returns valid result', async () => {
|
|
351
|
-
await usingAsync(new Injector(), async (i) => {
|
|
352
|
-
const authorizeGetEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
353
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
354
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGetEntity });
|
|
355
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
356
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
357
|
-
const result = await dataSet.get(i, 1);
|
|
358
|
-
expect(result && result.id).toBe(1);
|
|
359
|
-
});
|
|
360
|
-
});
|
|
361
|
-
it('should throw if authorizeGetEntity returns invalid result', async () => {
|
|
362
|
-
await usingAsync(new Injector(), async (i) => {
|
|
363
|
-
const authorizeGetEntity = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
364
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
365
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGetEntity });
|
|
366
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
367
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
368
|
-
try {
|
|
369
|
-
await dataSet.get(i, 1);
|
|
370
|
-
throw Error('Should throw');
|
|
371
|
-
}
|
|
372
|
-
catch (error) {
|
|
373
|
-
/** */
|
|
374
|
-
}
|
|
375
|
-
});
|
|
376
|
-
});
|
|
377
|
-
it('should pass the full entity to authorizeGetEntity even when select is used', async () => {
|
|
378
|
-
await usingAsync(new Injector(), async (i) => {
|
|
379
|
-
const authorizeGetEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
380
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
381
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGetEntity });
|
|
382
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
383
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
384
|
-
const result = await dataSet.get(i, 1, ['value']);
|
|
385
|
-
expect(authorizeGetEntity).toHaveBeenCalledTimes(1);
|
|
386
|
-
const calls = authorizeGetEntity.mock.calls;
|
|
387
|
-
expect(calls[0][0].entity).toEqual({ id: 1, value: 'asd' });
|
|
388
|
-
expect(result).toEqual({ value: 'asd' });
|
|
389
|
-
expect(result).not.toHaveProperty('id');
|
|
390
|
-
});
|
|
391
|
-
});
|
|
392
|
-
it('should return undefined when authorizeGetEntity is set and entity does not exist', async () => {
|
|
393
|
-
await usingAsync(new Injector(), async (i) => {
|
|
394
|
-
const authorizeGetEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
395
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
396
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeGetEntity });
|
|
397
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
398
|
-
const result = await dataSet.get(i, 999);
|
|
399
|
-
expect(result).toBeUndefined();
|
|
400
|
-
expect(authorizeGetEntity).not.toHaveBeenCalled();
|
|
401
|
-
});
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
describe('remove', () => {
|
|
405
|
-
it('should remove the entity if no settings are provided', async () => {
|
|
406
|
-
await usingAsync(new Injector(), async (i) => {
|
|
407
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
408
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
409
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
410
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
411
|
-
await dataSet.remove(i, 1);
|
|
412
|
-
const countValue = await dataSet.count(i);
|
|
413
|
-
expect(countValue).toBe(0);
|
|
414
|
-
});
|
|
415
|
-
});
|
|
416
|
-
it('should remove the entity if authorizeRemove returns valid result', async () => {
|
|
417
|
-
await usingAsync(new Injector(), async (i) => {
|
|
418
|
-
const authorizeRemove = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
419
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
420
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemove });
|
|
421
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
422
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
423
|
-
await dataSet.remove(i, 1);
|
|
424
|
-
const count = await dataSet.count(i);
|
|
425
|
-
expect(count).toBe(0);
|
|
426
|
-
});
|
|
427
|
-
});
|
|
428
|
-
it('should throw if authorizeRemove returns invalid result', async () => {
|
|
429
|
-
await usingAsync(new Injector(), async (i) => {
|
|
430
|
-
const authorizeRemove = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
431
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
432
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemove });
|
|
433
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
434
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
435
|
-
try {
|
|
436
|
-
await dataSet.remove(i, 1);
|
|
437
|
-
throw Error('Should throw');
|
|
438
|
-
}
|
|
439
|
-
catch (error) {
|
|
440
|
-
/** */
|
|
441
|
-
}
|
|
442
|
-
const count = await dataSet.count(i);
|
|
443
|
-
expect(count).toBe(1);
|
|
444
|
-
});
|
|
445
|
-
});
|
|
446
|
-
it('should remove the entity if authorizeRemoveEntity returns valid result', async () => {
|
|
447
|
-
await usingAsync(new Injector(), async (i) => {
|
|
448
|
-
const authorizeRemoveEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
449
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
450
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemoveEntity });
|
|
451
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
452
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
453
|
-
await dataSet.remove(i, 1);
|
|
454
|
-
const count = await dataSet.count(i);
|
|
455
|
-
expect(count).toBe(0);
|
|
456
|
-
});
|
|
457
|
-
});
|
|
458
|
-
it('should throw if authorizeRemoveEntity returns invalid result', async () => {
|
|
459
|
-
await usingAsync(new Injector(), async (i) => {
|
|
460
|
-
const authorizeRemoveEntity = vi.fn(async () => ({ isAllowed: false, message: ':(' }));
|
|
461
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
462
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemoveEntity });
|
|
463
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
464
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
465
|
-
try {
|
|
466
|
-
await dataSet.remove(i, 1);
|
|
467
|
-
throw Error('Should throw');
|
|
468
|
-
}
|
|
469
|
-
catch (error) {
|
|
470
|
-
/** */
|
|
471
|
-
}
|
|
472
|
-
const count = await dataSet.count(i);
|
|
473
|
-
expect(count).toBe(1);
|
|
474
|
-
});
|
|
475
|
-
});
|
|
476
|
-
it('should publish to the onEntityRemoved observable if an entity has been removed', async () => {
|
|
477
|
-
await usingAsync(new Injector(), async (i) => {
|
|
478
|
-
expect.assertions(1);
|
|
479
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
480
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
481
|
-
getRepository(i)
|
|
482
|
-
.getDataSetFor(TestClass, 'id')
|
|
483
|
-
.subscribe('onEntityRemoved', ({ key }) => {
|
|
484
|
-
expect(key).toEqual(1);
|
|
485
|
-
});
|
|
486
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
487
|
-
await dataSet.add(i, { id: 1, value: 'asd' });
|
|
488
|
-
await dataSet.remove(i, 1);
|
|
489
|
-
});
|
|
490
|
-
});
|
|
491
|
-
it('should remove multiple entities at once', async () => {
|
|
492
|
-
await usingAsync(new Injector(), async (i) => {
|
|
493
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
494
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
495
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
496
|
-
await dataSet.add(i, { id: 1, value: 'a' }, { id: 2, value: 'b' }, { id: 3, value: 'c' });
|
|
497
|
-
await dataSet.remove(i, 1, 3);
|
|
498
|
-
const count = await dataSet.count(i);
|
|
499
|
-
expect(count).toBe(1);
|
|
500
|
-
const remaining = await dataSet.get(i, 2);
|
|
501
|
-
expect(remaining?.value).toBe('b');
|
|
502
|
-
});
|
|
503
|
-
});
|
|
504
|
-
it('should emit onEntityRemoved for each key when removing multiple entities', async () => {
|
|
505
|
-
await usingAsync(new Injector(), async (i) => {
|
|
506
|
-
const removedKeys = [];
|
|
507
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
508
|
-
getRepository(i).createDataSet(TestClass, 'id');
|
|
509
|
-
getRepository(i)
|
|
510
|
-
.getDataSetFor(TestClass, 'id')
|
|
511
|
-
.subscribe('onEntityRemoved', ({ key }) => {
|
|
512
|
-
removedKeys.push(key);
|
|
513
|
-
});
|
|
514
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
515
|
-
await dataSet.add(i, { id: 1, value: 'a' }, { id: 2, value: 'b' });
|
|
516
|
-
await dataSet.remove(i, 1, 2);
|
|
517
|
-
expect(removedKeys).toEqual([1, 2]);
|
|
518
|
-
});
|
|
519
|
-
});
|
|
520
|
-
it('should authorize each entity when removing multiple with authorizeRemoveEntity', async () => {
|
|
521
|
-
await usingAsync(new Injector(), async (i) => {
|
|
522
|
-
const authorizeRemoveEntity = vi.fn(async () => ({ isAllowed: true, message: '' }));
|
|
523
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
524
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemoveEntity });
|
|
525
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
526
|
-
await dataSet.add(i, { id: 1, value: 'a' }, { id: 2, value: 'b' });
|
|
527
|
-
await dataSet.remove(i, 1, 2);
|
|
528
|
-
expect(authorizeRemoveEntity).toHaveBeenCalledTimes(2);
|
|
529
|
-
const count = await dataSet.count(i);
|
|
530
|
-
expect(count).toBe(0);
|
|
531
|
-
});
|
|
532
|
-
});
|
|
533
|
-
it('should not remove any entity if authorizeRemoveEntity fails for one (all-or-nothing)', async () => {
|
|
534
|
-
await usingAsync(new Injector(), async (i) => {
|
|
535
|
-
const authorizeRemoveEntity = vi.fn(async ({ entity }) => {
|
|
536
|
-
if (entity.id === 2) {
|
|
537
|
-
return { isAllowed: false, message: 'forbidden' };
|
|
538
|
-
}
|
|
539
|
-
return { isAllowed: true };
|
|
540
|
-
});
|
|
541
|
-
addStore(i, new InMemoryStore({ model: TestClass, primaryKey: 'id' }));
|
|
542
|
-
getRepository(i).createDataSet(TestClass, 'id', { authorizeRemoveEntity });
|
|
543
|
-
const dataSet = getDataSetFor(i, TestClass, 'id');
|
|
544
|
-
await dataSet.add(i, { id: 1, value: 'a' }, { id: 2, value: 'b' }, { id: 3, value: 'c' });
|
|
545
|
-
await expect(dataSet.remove(i, 1, 2, 3)).rejects.toThrow(AuthorizationError);
|
|
546
|
-
const count = await dataSet.count(i);
|
|
547
|
-
expect(count).toBe(3);
|
|
548
|
-
});
|
|
549
|
-
});
|
|
550
|
-
});
|
|
551
|
-
});
|
|
552
|
-
//# sourceMappingURL=dataset.spec.js.map
|
package/esm/dataset.spec.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataset.spec.js","sourceRoot":"","sources":["../src/dataset.spec.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,MAAM,SAAS;IACN,EAAE,GAAG,CAAC,CAAA;IACN,KAAK,GAAG,EAAE,CAAA;CAClB;AAED,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;IACvB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CACN,CAAC,EACD,IAAI,aAAa,CAAC;oBAChB,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE,IAAI;iBACjB,CAAC,CACH,CAAA;gBACD,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CACN,CAAC,EACD,IAAI,aAAa,CAAC;oBAChB,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE,IAAI;iBACjB,CAAC,CACH,CAAA;gBACD,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YAC9D,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAA;YAClG,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CACjF,uCAAuC,CACxC,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;gBAEnD,MAAM,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,MAAa,CAAC,CAAC,CAAC,YAAY,EAAE,CAAA;YACzE,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;YACnB,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;gBAChE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBAEtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;oBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACtC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;gBAC/E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAwB,CAAC,CAAA;oBACpF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBAEtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;oBACjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAA;oBACjC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACrC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC1C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,uGAAuG,EAAE,KAAK,IAAI,EAAE;gBACrH,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAwB,CAAC,CAAA;oBACrG,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBAEtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;oBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBAEjD,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;wBAC7C,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;oBAC7B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM;wBACN,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,EAAE,CAAA;wBACjC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACrC,MAAM,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAA;oBAC/B,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;gBAC1E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CACvB,KAAK,EAAE,OAAwE,EAAE,EAAE,CAAC,CAAC;wBACnF,GAAG,OAAO,CAAC,MAAM;wBACjB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE;qBAC1C,CAAC,CACH,CAAA;oBAED,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAA;oBAEhE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACtC,MAAM,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAA;oBAChC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC5C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;gBAClF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;oBACpB,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBAEtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;oBAEnD,aAAa,CAAC,CAAC,CAAC;yBACb,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;yBAC9B,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;wBACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAClC,CAAC,CAAC,CAAA;oBAEJ,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC/C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;YACtB,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;oBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;oBACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACtC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC7C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;gBACrF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAwB,CAAC,CAAA;oBACvF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;oBACpE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;oBACpD,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAA;oBACpC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACrC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,iHAAiH,EAAE,KAAK,IAAI,EAAE;gBAC/H,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAwB,CAAC,CAAA;oBAC9G,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;oBAE1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBAEjD,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;wBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;wBACpD,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;oBAC7B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM;wBACN,MAAM,CAAC,qBAAqB,CAAC,CAAC,UAAU,EAAE,CAAA;wBAC1C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACrC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC1C,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YACF,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;gBAC3F,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAwB,CAAC,CAAA;oBAC7F,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;oBAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;oBACpD,MAAM,CAAC,qBAAqB,CAAC,CAAC,UAAU,EAAE,CAAA;oBAC1C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACrC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC3C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,2GAA2G,EAAE,KAAK,IAAI,EAAE;gBACzH,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAwB,CAAC,CAAA;oBACxG,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;oBAEpE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBAEjD,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;wBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;wBACpD,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;oBAC7B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM;wBACN,MAAM,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,CAAA;wBACpC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBACrC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAC1C,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;gBAC7E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,cAAc,GAAuD,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;wBACnG,GAAG,OAAO,CAAC,MAAM;wBACjB,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,EAAY;qBACrD,CAAC,CAAC,CAAA;oBAEH,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAA;oBAEnE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;oBACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACtC,MAAM,CAAC,cAAc,CAAC,CAAC,UAAU,EAAE,CAAA;oBACnC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;gBAC7C,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;gBAC9F,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;oBACpB,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;oBAE/C,aAAa,CAAC,CAAC,CAAC;yBACb,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;yBAC9B,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;wBAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;oBAClD,CAAC,CAAC,CAAA;oBAEJ,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;gBACtD,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;oBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;gBAC5E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;oBAC1E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;oBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBACrC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;YAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBAC7E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;oBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;oBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;oBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;oBAC7C,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;wBACtB,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;oBAC7B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC1E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;gBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC/B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC7E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;gBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBACzB,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM;gBACR,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACtC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC1E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;gBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACtC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC7E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,CAAA;gBAEjE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACvB,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM;gBACR,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,kBAAkB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBAChF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;gBAEvE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACtC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACzE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,kBAAkB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACnF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;gBAEvE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBACvB,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM;gBACR,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;YAC1F,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,kBAAkB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAwB,CAAC,CAAA;gBACvG,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;gBAEvE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;gBACjD,MAAM,CAAC,kBAAkB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;gBACnD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAkD,CAAA;gBACxF,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kFAAkF,EAAE,KAAK,IAAI,EAAE;YAChG,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,kBAAkB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAwB,CAAC,CAAA;gBACvG,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAA;gBAEvE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;gBAC9B,MAAM,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;YACnD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1B,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACzC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;YAChF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBAC7E,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;gBAEpE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBAChF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;gBAEpE,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC1B,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM;gBACR,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;YACtF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;gBACnF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;gBAE1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;gBAE1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC1B,MAAM,KAAK,CAAC,cAAc,CAAC,CAAA;gBAC7B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM;gBACR,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QACF,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;gBACpB,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAE/C,aAAa,CAAC,CAAC,CAAC;qBACb,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;qBAC9B,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;oBACxC,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBACxB,CAAC,CAAC,CAAA;gBAEJ,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;gBAC7C,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;gBACzF,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACrB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACzC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,WAAW,GAAa,EAAE,CAAA;gBAChC,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;gBAE/C,aAAa,CAAC,CAAC,CAAC;qBACb,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC;qBAC9B,SAAS,CAAC,iBAAiB,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;oBACxC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACvB,CAAC,CAAC,CAAA;gBAEJ,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;gBAClE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7B,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;YAC9F,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAwB,CAAC,CAAA;gBAC1G,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;gBAE1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;gBAClE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC7B,MAAM,CAAC,qBAAqB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;gBACtD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;YACpG,MAAM,UAAU,CAAC,IAAI,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC3C,MAAM,qBAAqB,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,MAAM,EAAyB,EAAE,EAAE;oBAC9E,IAAI,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAyB,CAAA;oBAC1E,CAAC;oBACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAyB,CAAA;gBACnD,CAAC,CAAC,CAAA;gBACF,QAAQ,CAAC,CAAC,EAAE,IAAI,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACtE,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAA;gBAE1E,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;gBACjD,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;gBACzF,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAA;gBAC5E,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/esm/repository.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { WithOptionalId } from '@furystack/core';
|
|
2
|
-
import type { Constructable } from '@furystack/inject';
|
|
3
|
-
import type { DataSetSettings } from './data-set-setting.js';
|
|
4
|
-
import { DataSet } from './data-set.js';
|
|
5
|
-
/**
|
|
6
|
-
* Collection of authorized physical stores
|
|
7
|
-
*/
|
|
8
|
-
export declare class Repository implements Disposable {
|
|
9
|
-
[Symbol.dispose](): void;
|
|
10
|
-
private dataSets;
|
|
11
|
-
getDataSetFor<T, TPrimaryKey extends keyof T, TWritableData = WithOptionalId<T, TPrimaryKey>>(model: Constructable<T>, primaryKey: TPrimaryKey): DataSet<T, TPrimaryKey, TWritableData>;
|
|
12
|
-
createDataSet<T, TPrimaryKey extends keyof T>(model: Constructable<T>, primaryKey: TPrimaryKey, settings?: Partial<DataSetSettings<T, TPrimaryKey>>): this;
|
|
13
|
-
private readonly storeManager;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=repository.d.ts.map
|
package/esm/repository.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAErD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC;;GAEG;AACH,qBACa,UAAW,YAAW,UAAU;IACpC,CAAC,MAAM,CAAC,OAAO,CAAC;IAKvB,OAAO,CAAC,QAAQ,CAAyC;IAElD,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EAAE,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,WAAW,CAAC,EACjG,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,WAAW,GAUG,OAAO,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,CAAC;IAE3D,aAAa,CAAC,CAAC,EAAE,WAAW,SAAS,MAAM,CAAC,EACjD,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,UAAU,EAAE,WAAW,EACvB,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAWrD,iBACyB,YAAY,CAAc;CACpD"}
|