@cratis/chronicle 6.18.0 → 6.20.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/dist/eventSequences/EventSequence.d.ts.map +1 -1
- package/dist/eventSequences/EventSequence.js +2 -9
- package/dist/eventSequences/EventSequence.js.map +1 -1
- package/dist/eventSequences/prepareSingleAppend.d.ts +12 -0
- package/dist/eventSequences/prepareSingleAppend.d.ts.map +1 -0
- package/dist/eventSequences/prepareSingleAppend.js +22 -0
- package/dist/eventSequences/prepareSingleAppend.js.map +1 -0
- package/dist/testing/EventScenario.d.ts +29 -0
- package/dist/testing/EventScenario.d.ts.map +1 -0
- package/dist/testing/EventScenario.js +60 -0
- package/dist/testing/EventScenario.js.map +1 -0
- package/dist/testing/EventScenarioGiven.d.ts +9 -0
- package/dist/testing/EventScenarioGiven.d.ts.map +1 -0
- package/dist/testing/EventScenarioGiven.js +19 -0
- package/dist/testing/EventScenarioGiven.js.map +1 -0
- package/dist/testing/EventScenarioGivenBuilder.d.ts +9 -0
- package/dist/testing/EventScenarioGivenBuilder.d.ts.map +1 -0
- package/dist/testing/EventScenarioGivenBuilder.js +12 -0
- package/dist/testing/EventScenarioGivenBuilder.js.map +1 -0
- package/dist/testing/EventScenarioOptions.d.ts +21 -0
- package/dist/testing/EventScenarioOptions.d.ts.map +1 -0
- package/dist/testing/EventScenarioOptions.js +4 -0
- package/dist/testing/EventScenarioOptions.js.map +1 -0
- package/dist/testing/EventScenarioSeed.d.ts +5 -0
- package/dist/testing/EventScenarioSeed.d.ts.map +1 -0
- package/dist/testing/EventScenarioSeed.js +14 -0
- package/dist/testing/EventScenarioSeed.js.map +1 -0
- package/dist/testing/EventScenarioWhen.d.ts +11 -0
- package/dist/testing/EventScenarioWhen.d.ts.map +1 -0
- package/dist/testing/EventScenarioWhen.js +17 -0
- package/dist/testing/EventScenarioWhen.js.map +1 -0
- package/dist/testing/EventScenarioWhenBuilder.d.ts +9 -0
- package/dist/testing/EventScenarioWhenBuilder.d.ts.map +1 -0
- package/dist/testing/EventScenarioWhenBuilder.js +12 -0
- package/dist/testing/EventScenarioWhenBuilder.js.map +1 -0
- package/dist/testing/IReadModelProcessor.d.ts +7 -0
- package/dist/testing/IReadModelProcessor.d.ts.map +1 -0
- package/dist/testing/IReadModelProcessor.js +4 -0
- package/dist/testing/IReadModelProcessor.js.map +1 -0
- package/dist/testing/InProcessEventSequence.d.ts +49 -0
- package/dist/testing/InProcessEventSequence.d.ts.map +1 -0
- package/dist/testing/InProcessEventSequence.js +265 -0
- package/dist/testing/InProcessEventSequence.js.map +1 -0
- package/dist/testing/ReadModelScenario.d.ts +6 -8
- package/dist/testing/ReadModelScenario.d.ts.map +1 -1
- package/dist/testing/ReadModelScenario.js +50 -50
- package/dist/testing/ReadModelScenario.js.map +1 -1
- package/dist/testing/ReadModelState.d.ts +6 -0
- package/dist/testing/ReadModelState.d.ts.map +1 -0
- package/dist/testing/ReadModelState.js +4 -0
- package/dist/testing/ReadModelState.js.map +1 -0
- package/dist/testing/ReducerReadModelProcessor.d.ts +13 -0
- package/dist/testing/ReducerReadModelProcessor.d.ts.map +1 -0
- package/dist/testing/ReducerReadModelProcessor.js +38 -0
- package/dist/testing/ReducerReadModelProcessor.js.map +1 -0
- package/dist/testing/ScenarioEvent.d.ts +8 -0
- package/dist/testing/ScenarioEvent.d.ts.map +1 -0
- package/dist/testing/ScenarioEvent.js +4 -0
- package/dist/testing/ScenarioEvent.js.map +1 -0
- package/dist/testing/UnsupportedEventSequenceOperation.d.ts +5 -0
- package/dist/testing/UnsupportedEventSequenceOperation.d.ts.map +1 -0
- package/dist/testing/UnsupportedEventSequenceOperation.js +10 -0
- package/dist/testing/UnsupportedEventSequenceOperation.js.map +1 -0
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +7 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/projections/ProjectionCapabilities.d.ts +3 -0
- package/dist/testing/projections/ProjectionCapabilities.d.ts.map +1 -1
- package/dist/testing/projections/ProjectionCapabilities.js +117 -43
- package/dist/testing/projections/ProjectionCapabilities.js.map +1 -1
- package/dist/testing/projections/ProjectionExpressionEvaluator.d.ts +9 -0
- package/dist/testing/projections/ProjectionExpressionEvaluator.d.ts.map +1 -0
- package/dist/testing/projections/ProjectionExpressionEvaluator.js +68 -0
- package/dist/testing/projections/ProjectionExpressionEvaluator.js.map +1 -0
- package/dist/testing/projections/ProjectionReadModelProcessor.d.ts +30 -0
- package/dist/testing/projections/ProjectionReadModelProcessor.d.ts.map +1 -0
- package/dist/testing/projections/ProjectionReadModelProcessor.js +142 -0
- package/dist/testing/projections/ProjectionReadModelProcessor.js.map +1 -0
- package/dist/testing/projections/ProjectionValueConverter.d.ts +13 -0
- package/dist/testing/projections/ProjectionValueConverter.d.ts.map +1 -0
- package/dist/testing/projections/ProjectionValueConverter.js +122 -0
- package/dist/testing/projections/ProjectionValueConverter.js.map +1 -0
- package/dist/testing/projections/for_ProjectionCapabilities/given/Changed.d.ts +0 -2
- package/dist/testing/projections/for_ProjectionCapabilities/given/Changed.d.ts.map +1 -1
- package/dist/testing/projections/for_ProjectionCapabilities/given/Changed.js +0 -4
- package/dist/testing/projections/for_ProjectionCapabilities/given/Changed.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eventSequences/EventSequence.ts +2 -12
- package/eventSequences/prepareSingleAppend.ts +25 -0
- package/package.json +1 -1
- package/testing/EventScenario.fixtures.spec.ts +271 -0
- package/testing/EventScenario.rejections.spec.ts +307 -0
- package/testing/EventScenario.ts +77 -0
- package/testing/EventScenarioGiven.ts +16 -0
- package/testing/EventScenarioGivenBuilder.ts +11 -0
- package/testing/EventScenarioOptions.ts +20 -0
- package/testing/EventScenarioSeed.ts +17 -0
- package/testing/EventScenarioWhen.ts +16 -0
- package/testing/EventScenarioWhenBuilder.ts +11 -0
- package/testing/IReadModelProcessor.ts +10 -0
- package/testing/InProcessEventSequence.ts +275 -0
- package/testing/ReadModelScenario.spec.ts +156 -10
- package/testing/ReadModelScenario.ts +57 -57
- package/testing/ReadModelState.ts +5 -0
- package/testing/ReducerReadModelProcessor.ts +39 -0
- package/testing/ScenarioEvent.ts +7 -0
- package/testing/UnsupportedEventSequenceOperation.ts +10 -0
- package/testing/index.ts +8 -0
- package/testing/projections/ProjectionCapabilities.ts +100 -39
- package/testing/projections/ProjectionExpressionEvaluator.ts +57 -0
- package/testing/projections/ProjectionReadModelProcessor.fixtures.spec.ts +135 -0
- package/testing/projections/ProjectionReadModelProcessor.ts +147 -0
- package/testing/projections/ProjectionValueConverter.spec.ts +81 -0
- package/testing/projections/ProjectionValueConverter.ts +113 -0
- package/testing/projections/for_ProjectionCapabilities/given/Changed.ts +1 -3
- package/testing/projections/for_ProjectionCapabilities/when_rejecting_unsupported_operations.spec.ts +81 -1
- package/testing/projections/for_ProjectionCapabilities/when_validating_numeric_schemas.spec.ts +40 -12
- package/testing/projections/for_ProjectionCapabilities/when_validating_schema_boundaries.spec.ts +76 -29
- package/testing/projections/for_ProjectionCapabilities/when_validating_supported_operations.spec.ts +8 -35
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { ReducerEventDispatcher } from '../reducers/ReducerEventDispatcher.js';
|
|
4
|
+
/** Preserves the SDK reducer dispatch and the scenario's null-versus-deletion semantics. */
|
|
5
|
+
export class ReducerReadModelProcessor {
|
|
6
|
+
_readModelType;
|
|
7
|
+
_reducerType;
|
|
8
|
+
_dispatcher;
|
|
9
|
+
constructor(_readModelType, _reducerType, eventTypes) {
|
|
10
|
+
this._readModelType = _readModelType;
|
|
11
|
+
this._reducerType = _reducerType;
|
|
12
|
+
this._dispatcher = new ReducerEventDispatcher(_reducerType, eventTypes);
|
|
13
|
+
}
|
|
14
|
+
async process(events) {
|
|
15
|
+
const results = new Map();
|
|
16
|
+
const reducer = new this._reducerType();
|
|
17
|
+
for (const event of events) {
|
|
18
|
+
const handler = this._dispatcher.handlerFor(event.context.eventType.id.value);
|
|
19
|
+
if (!handler)
|
|
20
|
+
continue;
|
|
21
|
+
const prior = results.get(event.sourceId);
|
|
22
|
+
const previous = prior?.deleted ? undefined : prior?.instance;
|
|
23
|
+
let next;
|
|
24
|
+
try {
|
|
25
|
+
next = await this._dispatcher.invoke(reducer, handler, event.content, previous, event.context);
|
|
26
|
+
}
|
|
27
|
+
catch (cause) {
|
|
28
|
+
throw new Error(`Reducer '${this._reducerType.name}' for read model '${this._readModelType.name}' failed`, { cause });
|
|
29
|
+
}
|
|
30
|
+
results.set(event.sourceId, {
|
|
31
|
+
instance: next === undefined ? null : next,
|
|
32
|
+
deleted: next === undefined
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return results;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ReducerReadModelProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReducerReadModelProcessor.js","sourceRoot":"","sources":["../../testing/ReducerReadModelProcessor.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAK/E,4FAA4F;AAC5F,MAAM,OAAO,yBAAyB;IAGL,cAAc;IAA4C,YAAY;IAFlF,WAAW,CAAyB;IAErD,YAA6B,cAAuC,EAAmB,YAAyB,EAAE,UAAyB;8BAA9G,cAAc;4BAA4C,YAAY;QAC/F,IAAI,CAAC,WAAW,GAAG,IAAI,sBAAsB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAgC;QAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsC,CAAC;QAC9D,MAAM,OAAO,GAAG,IAAK,IAAI,CAAC,YAAmD,EAAE,CAAC;QAChF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC9E,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC;YAC9D,IAAI,IAAa,CAAC;YAClB,IAAI,CAAC;gBACD,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACnG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,qBAAqB,IAAI,CAAC,cAAc,CAAC,IAAI,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YAC1H,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxB,QAAQ,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAyB;gBAC/D,OAAO,EAAE,IAAI,KAAK,SAAS;aAC9B,CAAC,CAAC;QACP,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScenarioEvent.d.ts","sourceRoot":"","sources":["../../testing/ScenarioEvent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,oDAAoD;AACpD,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScenarioEvent.js","sourceRoot":"","sources":["../../testing/ScenarioEvent.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** A kernel operation or definition outside the fixture-backed in-process boundary. */
|
|
2
|
+
export declare class UnsupportedEventSequenceOperation extends Error {
|
|
3
|
+
constructor(operation: string, artifact: string, reason: string);
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=UnsupportedEventSequenceOperation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsupportedEventSequenceOperation.d.ts","sourceRoot":"","sources":["../../testing/UnsupportedEventSequenceOperation.ts"],"names":[],"mappings":"AAGA,uFAAuF;AACvF,qBAAa,iCAAkC,SAAQ,KAAK;IACxD,YAAY,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAG9D;CACJ"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
/** A kernel operation or definition outside the fixture-backed in-process boundary. */
|
|
4
|
+
export class UnsupportedEventSequenceOperation extends Error {
|
|
5
|
+
constructor(operation, artifact, reason) {
|
|
6
|
+
super(`UnsupportedEventSequenceOperation: ${operation} (${artifact}): ${reason} Use a kernel-backed test.`);
|
|
7
|
+
this.name = 'UnsupportedEventSequenceOperation';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=UnsupportedEventSequenceOperation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnsupportedEventSequenceOperation.js","sourceRoot":"","sources":["../../testing/UnsupportedEventSequenceOperation.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,uFAAuF;AACvF,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IACxD,YAAY,SAAiB,EAAE,QAAgB,EAAE,MAAc;QAC3D,KAAK,CAAC,sCAAsC,SAAS,KAAK,QAAQ,MAAM,MAAM,4BAA4B,CAAC,CAAC;QAC5G,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC;IACpD,CAAC;CACJ"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
export { EventScenario } from './EventScenario.js';
|
|
2
|
+
export type { EventScenarioOptions } from './EventScenarioOptions.js';
|
|
3
|
+
export { EventScenarioGivenBuilder } from './EventScenarioGivenBuilder.js';
|
|
4
|
+
export { EventScenarioGiven } from './EventScenarioGiven.js';
|
|
5
|
+
export { EventScenarioWhenBuilder } from './EventScenarioWhenBuilder.js';
|
|
6
|
+
export { EventScenarioWhen } from './EventScenarioWhen.js';
|
|
7
|
+
export { UnsupportedEventSequenceOperation } from './UnsupportedEventSequenceOperation.js';
|
|
1
8
|
export { ReadModelScenario } from './ReadModelScenario.js';
|
|
2
9
|
export { ReadModelScenarioGiven } from './ReadModelScenarioGiven.js';
|
|
3
10
|
export { ReadModelScenarioGivenBuilder } from './ReadModelScenarioGivenBuilder.js';
|
|
11
|
+
export { UnsupportedProjectionOperation } from './projections/UnsupportedProjectionOperation.js';
|
|
4
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testing/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../testing/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC"}
|
package/dist/testing/index.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
// Copyright (c) Cratis. All rights reserved.
|
|
2
2
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
export { EventScenario } from './EventScenario.js';
|
|
4
|
+
export { EventScenarioGivenBuilder } from './EventScenarioGivenBuilder.js';
|
|
5
|
+
export { EventScenarioGiven } from './EventScenarioGiven.js';
|
|
6
|
+
export { EventScenarioWhenBuilder } from './EventScenarioWhenBuilder.js';
|
|
7
|
+
export { EventScenarioWhen } from './EventScenarioWhen.js';
|
|
8
|
+
export { UnsupportedEventSequenceOperation } from './UnsupportedEventSequenceOperation.js';
|
|
3
9
|
export { ReadModelScenario } from './ReadModelScenario.js';
|
|
4
10
|
export { ReadModelScenarioGiven } from './ReadModelScenarioGiven.js';
|
|
5
11
|
export { ReadModelScenarioGivenBuilder } from './ReadModelScenarioGivenBuilder.js';
|
|
12
|
+
export { UnsupportedProjectionOperation } from './projections/UnsupportedProjectionOperation.js';
|
|
6
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../testing/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../testing/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC"}
|
|
@@ -10,8 +10,11 @@ export declare class ProjectionCapabilities {
|
|
|
10
10
|
static validate(compiled: CompiledProjectionDefinitions, definition: ProjectionDefinition): void;
|
|
11
11
|
private static checkAutoMap;
|
|
12
12
|
private static checkMapping;
|
|
13
|
+
private static compatible;
|
|
14
|
+
private static checkInitialValue;
|
|
13
15
|
private static propertyAt;
|
|
14
16
|
private static numeric;
|
|
17
|
+
private static checkProtection;
|
|
15
18
|
private static checkSchema;
|
|
16
19
|
}
|
|
17
20
|
//# sourceMappingURL=ProjectionCapabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionCapabilities.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionCapabilities.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionCapabilities.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionCapabilities.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEjF,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAOxG,gGAAgG;AAChG,qBAAa,sBAAsB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,6BAA6B,EAAE,UAAU,EAAE,oBAAoB,GAAG,IAAI,CA6F/F;IAED,OAAO,CAAC,MAAM,CAAC,YAAY;IAa3B,OAAO,CAAC,MAAM,CAAC,YAAY;IA0E3B,OAAO,CAAC,MAAM,CAAC,UAAU;IAczB,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAuBhC,OAAO,CAAC,MAAM,CAAC,UAAU;IAIzB,OAAO,CAAC,MAAM,CAAC,OAAO;IAKtB,OAAO,CAAC,MAAM,CAAC,eAAe;IAS9B,OAAO,CAAC,MAAM,CAAC,WAAW;CAiB7B"}
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
import { AutoMap } from '@cratis/chronicle.contracts';
|
|
4
4
|
import { EventSequenceId } from '../../eventSequences/EventSequenceId.js';
|
|
5
5
|
import { eventContractPath } from '../../projections/eventContractPath.js';
|
|
6
|
-
import { eventContextPropertyExpression } from '../../projections/eventContextPropertyExpression.js';
|
|
7
|
-
import { InvalidEventContextPropertyError } from '../../projections/InvalidEventContextPropertyError.js';
|
|
8
6
|
import { getEventTypeMapKey } from '../../projections/modelBound/childrenAndNestedBuilder.js';
|
|
9
7
|
import { UnsupportedProjectionOperation } from './UnsupportedProjectionOperation.js';
|
|
10
8
|
/** Validates *all* subscribed operations against the bounded scenario subset, before replay. */
|
|
@@ -34,6 +32,8 @@ export class ProjectionCapabilities {
|
|
|
34
32
|
reject('Variant', 'variants require a kernel-backed test');
|
|
35
33
|
if (wire.IsActive === false)
|
|
36
34
|
reject('IsActive', 'passive projections require a kernel-backed test');
|
|
35
|
+
if (wire.SubscribesToAllEvents === true)
|
|
36
|
+
reject('SubscribesToAllEvents', 'subscribe-to-all projections require a kernel-backed test');
|
|
37
37
|
if (wire.EventSequenceId !== EventSequenceId.eventLog.value)
|
|
38
38
|
reject('EventSequenceId', 'non-default event sequences require a kernel-backed test');
|
|
39
39
|
for (const section of ['Join', 'Children', 'Nested', 'RemovedWithJoin']) {
|
|
@@ -61,11 +61,17 @@ export class ProjectionCapabilities {
|
|
|
61
61
|
catch {
|
|
62
62
|
reject('ReadModel.Schema', 'read-model schema is not valid JSON');
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
(identifier.type === '
|
|
68
|
-
reject('ReadModel.Schema.id', '
|
|
64
|
+
this.checkProtection(schema, 'ReadModel.Schema', reject);
|
|
65
|
+
const identifier = schema.properties?.id;
|
|
66
|
+
if (!identifier || !((identifier.type === 'string' && (!identifier.format || identifier.format === 'guid')) ||
|
|
67
|
+
(identifier.type === 'number' && identifier.format === 'double'))) {
|
|
68
|
+
reject('ReadModel.Schema.id', 'only a lowercase id with a fixture-backed string, GUID, or number/double schema is supported; other identifiers require a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
69
|
+
}
|
|
70
|
+
const names = Object.keys(schema.properties ?? {});
|
|
71
|
+
for (const [index, name] of names.entries()) {
|
|
72
|
+
if (names.slice(index + 1).some(other => other.toLowerCase() === name.toLowerCase())) {
|
|
73
|
+
reject(`ReadModel.Schema.${name}`, 'case-insensitively colliding read-model properties require a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
74
|
+
}
|
|
69
75
|
}
|
|
70
76
|
let initial;
|
|
71
77
|
try {
|
|
@@ -80,14 +86,7 @@ export class ProjectionCapabilities {
|
|
|
80
86
|
const target = schema.properties?.[property]
|
|
81
87
|
?? reject(`InitialModelState.${property}`, 'initial value has no read-model schema');
|
|
82
88
|
this.checkSchema(target, `InitialModelState.${property}`, reject);
|
|
83
|
-
|
|
84
|
-
const outsideIntegerRange = !Number.isSafeInteger(value) ||
|
|
85
|
-
(target.format === 'int32' && (value < -2147483648 || value > 2147483647)) ||
|
|
86
|
-
(target.format === 'uint32' && (value < 0 || value > 4294967295));
|
|
87
|
-
if (!Number.isFinite(value) || (target.type === 'integer' && outsideIntegerRange)) {
|
|
88
|
-
reject(`InitialModelState.${property}`, 'initial numeric value is outside the supported finite/integer range');
|
|
89
|
-
}
|
|
90
|
-
}
|
|
89
|
+
this.checkInitialValue(value, target, `InitialModelState.${property}`, reject);
|
|
91
90
|
}
|
|
92
91
|
const generations = new Map();
|
|
93
92
|
const requireEventSchema = (eventType, path) => {
|
|
@@ -100,6 +99,11 @@ export class ProjectionCapabilities {
|
|
|
100
99
|
};
|
|
101
100
|
const from = wire.From ?? [];
|
|
102
101
|
const removedWith = wire.RemovedWith ?? [];
|
|
102
|
+
for (const entry of from) {
|
|
103
|
+
if (removedWith.some(removal => removal.Key.Id === entry.Key.Id)) {
|
|
104
|
+
reject(eventContractPath('From', entry.Key), 'events subscribed through both From and RemovedWith require a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
103
107
|
for (const entry of [...from, ...removedWith]) {
|
|
104
108
|
const section = from.includes(entry) ? 'From' : 'RemovedWith';
|
|
105
109
|
const path = eventContractPath(section, entry.Key);
|
|
@@ -115,16 +119,15 @@ export class ProjectionCapabilities {
|
|
|
115
119
|
const mappingPath = `${path}.Properties.${property}`;
|
|
116
120
|
this.checkMapping(schema, eventSchema, property, expression, mappingPath, reject);
|
|
117
121
|
}
|
|
118
|
-
|
|
119
|
-
const aggregateOnly = expressions.length > 0 && expressions.every(expression => /^(?:\$add\([^()]+\)|\$subtract\([^()]+\)|\$count|\$increment|\$decrement)$/.test(expression));
|
|
120
|
-
if (wire.AutoMap === AutoMap.Enabled && !aggregateOnly) {
|
|
122
|
+
if (wire.AutoMap !== AutoMap.Disabled) {
|
|
121
123
|
this.checkAutoMap(schema, eventSchema, properties, wire.NoAutoMapProperties ?? [], path, reject);
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
126
|
}
|
|
125
127
|
static checkAutoMap(modelSchema, eventSchema, explicit, exclusions, path, reject) {
|
|
126
128
|
for (const [destination] of Object.entries(modelSchema.properties ?? {})) {
|
|
127
|
-
if (
|
|
129
|
+
if (Object.keys(explicit).some(name => name.toLowerCase() === destination.toLowerCase()) ||
|
|
130
|
+
exclusions.some(name => name.toLowerCase() === destination.toLowerCase()))
|
|
128
131
|
continue;
|
|
129
132
|
const candidates = Object.keys(eventSchema.properties ?? {}).filter(source => source.toLowerCase() === destination.toLowerCase());
|
|
130
133
|
if (candidates.length > 1)
|
|
@@ -139,31 +142,41 @@ export class ProjectionCapabilities {
|
|
|
139
142
|
?? fail('dynamic or unknown destination paths require a kernel-backed test');
|
|
140
143
|
if (destination.includes('.') || destination.includes('$'))
|
|
141
144
|
fail('dynamic or unknown destination paths require a kernel-backed test');
|
|
145
|
+
if (destination.toLowerCase() === 'id' || Object.keys(modelSchema.properties ?? {}).some(name => name !== destination && name.toLowerCase() === destination.toLowerCase())) {
|
|
146
|
+
fail('identifier or case-insensitively colliding target mappings require a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
147
|
+
}
|
|
148
|
+
if (target.type === 'object' || target.type === 'array')
|
|
149
|
+
fail('object/array target mappings require a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
142
150
|
this.checkSchema(target, path, (_path, reason) => fail(reason));
|
|
143
|
-
if (expression === '$eventSourceId'
|
|
151
|
+
if (expression === '$eventSourceId') {
|
|
152
|
+
if (target.type !== 'string' || (target.format && target.format !== 'guid')) {
|
|
153
|
+
fail('$eventSourceId requires a string or GUID target; other targets require a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
154
|
+
}
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
if (expression === '$null')
|
|
144
158
|
return;
|
|
145
159
|
if (expression.startsWith('$eventContext(')) {
|
|
160
|
+
if (expression === '$eventContext(Occurred)')
|
|
161
|
+
fail('raw Occurred is converted inconsistently by the kernel; only its Year, Month and Day paths are supported');
|
|
146
162
|
if (/^\$eventContext\(.+\(\)\)$/.test(expression))
|
|
147
163
|
fail('derived event-context functions require a kernel-backed test');
|
|
148
164
|
const path = /^\$eventContext\(([^()]*)\)$/.exec(expression)?.[1];
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
fail('event-context path is not supported by the client');
|
|
165
|
+
const strings = ['EventSourceId', 'EventStore', 'Namespace', 'EventSourceType', 'EventStreamType',
|
|
166
|
+
'EventStreamId', 'Subject', 'Subject.Value', 'Hash', 'CorrelationId', 'CorrelationId.Value',
|
|
167
|
+
'CausedBy.Subject', 'CausedBy.Name', 'CausedBy.UserName', 'EventType.Id.Value', 'SequenceNumber', 'SequenceNumber.Value'];
|
|
168
|
+
const integers = ['Occurred.Year', 'Occurred.Month', 'Occurred.Day', 'EventType.Generation.Value'];
|
|
169
|
+
if (path && ((strings.includes(path) && target.type === 'string' && !target.format) ||
|
|
170
|
+
(integers.includes(path) && target.type === 'integer' && target.format === 'int32')))
|
|
171
|
+
return;
|
|
172
|
+
fail('event-context path and target schema require a kernel-backed test');
|
|
160
173
|
}
|
|
161
174
|
if (/^\$value\([\p{L}\p{Mn}\p{Nd}\p{Pc} ._/:*+-]*\)$/u.test(expression)) {
|
|
162
175
|
const text = expression.slice(7, -1);
|
|
163
176
|
if (target.format === 'date-time')
|
|
164
177
|
fail('$value date-time literals require a kernel-backed test');
|
|
165
178
|
if (this.numeric(target)) {
|
|
166
|
-
if (
|
|
179
|
+
if (!(target.type === 'integer' ? /^[+-]?\d+$/.test(text) : /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(text)) || !Number.isFinite(Number(text)) ||
|
|
167
180
|
(target.type === 'integer' && (!Number.isSafeInteger(Number(text)) ||
|
|
168
181
|
(target.format === 'int32' && (Number(text) < -2147483648 || Number(text) > 2147483647)) ||
|
|
169
182
|
(target.format === 'uint32' && (Number(text) < 0 || Number(text) > 4294967295))))) {
|
|
@@ -183,21 +196,21 @@ export class ProjectionCapabilities {
|
|
|
183
196
|
}
|
|
184
197
|
const operation = /^(\$add|\$subtract)\(([^()]+)\)$/.exec(expression);
|
|
185
198
|
const arithmetic = operation || ['$count', '$increment', '$decrement'].includes(expression);
|
|
186
|
-
if (arithmetic)
|
|
187
|
-
|
|
188
|
-
fail('arithmetic requires a supported finite number/double or int32/uint32 schema (not float, decimal, duration, or int64)');
|
|
189
|
-
if (operation) {
|
|
190
|
-
const operand = this.propertyAt(eventSchema, operation[2]);
|
|
191
|
-
if (!operand || !this.numeric(operand))
|
|
192
|
-
fail('arithmetic operand requires a supported numeric event schema');
|
|
193
|
-
}
|
|
194
|
-
return;
|
|
195
|
-
}
|
|
199
|
+
if (arithmetic)
|
|
200
|
+
fail('arithmetic requires a kernel-backed test (ChronicleKernelScenario / live kernel)');
|
|
196
201
|
if (/^[A-Za-z_][\w]*(?:\.[A-Za-z_][\w]*)*$/.test(expression)) {
|
|
202
|
+
if (['true', 'True', 'false', 'False'].includes(expression)) {
|
|
203
|
+
fail('kernel resolves this expression as a boolean literal before event content');
|
|
204
|
+
}
|
|
205
|
+
if (expression.includes('.'))
|
|
206
|
+
fail('nested event property paths require a kernel-backed test');
|
|
197
207
|
const source = this.propertyAt(eventSchema, expression);
|
|
198
208
|
if (!source)
|
|
199
209
|
return fail(`event property '${expression}' is absent from the participating event schema`);
|
|
200
210
|
this.checkSchema(source, path, (_path, reason) => fail(reason));
|
|
211
|
+
if (!this.compatible(source, target)) {
|
|
212
|
+
fail(`source '${expression}' (${source.type}${source.format ? `/${source.format}` : ''}) to target '${destination}' (${target.type}${target.format ? `/${target.format}` : ''}) requires a kernel-backed test`);
|
|
213
|
+
}
|
|
201
214
|
return;
|
|
202
215
|
}
|
|
203
216
|
if (expression.startsWith('$context.')) {
|
|
@@ -205,6 +218,52 @@ export class ProjectionCapabilities {
|
|
|
205
218
|
}
|
|
206
219
|
fail('requires a kernel-backed test');
|
|
207
220
|
}
|
|
221
|
+
static compatible(source, target) {
|
|
222
|
+
if (JSON.stringify(source.type) === JSON.stringify(target.type) && source.format === target.format) {
|
|
223
|
+
return source.type !== 'object' && source.type !== 'array';
|
|
224
|
+
}
|
|
225
|
+
if (source.type === 'string' && !source.format && Array.isArray(target.type) &&
|
|
226
|
+
target.type[0] === 'string' && target.type[1] === 'null')
|
|
227
|
+
return true;
|
|
228
|
+
if (source.type === 'string' && !source.format &&
|
|
229
|
+
((target.type === 'number' && (!target.format || target.format === 'double')) ||
|
|
230
|
+
(target.type === 'integer' && ['int32', 'uint32'].includes(target.format ?? ''))))
|
|
231
|
+
return true;
|
|
232
|
+
if (source.type === 'string' && source.format === 'guid' && target.type === 'string' && !target.format)
|
|
233
|
+
return true;
|
|
234
|
+
return source.type === 'integer' && ['int32', 'uint32'].includes(source.format ?? '') &&
|
|
235
|
+
target.type === 'number' && (!target.format || target.format === 'double');
|
|
236
|
+
}
|
|
237
|
+
static checkInitialValue(value, target, path, reject) {
|
|
238
|
+
if (value === null && Array.isArray(target.type) && target.type.includes('null'))
|
|
239
|
+
return;
|
|
240
|
+
if (target.type === 'object' || target.type === 'array' || target.format === 'date-time') {
|
|
241
|
+
reject(path, 'initial object, array, or date-time values require a kernel-backed test');
|
|
242
|
+
}
|
|
243
|
+
if (target.type === 'integer' || target.type === 'number') {
|
|
244
|
+
if (typeof value !== 'number')
|
|
245
|
+
reject(path, 'initial numeric value must be a JSON number');
|
|
246
|
+
const outsideIntegerRange = !Number.isSafeInteger(value) ||
|
|
247
|
+
(target.format === 'int32' && (value < -2147483648 || value > 2147483647)) ||
|
|
248
|
+
(target.format === 'uint32' && (value < 0 || value > 4294967295));
|
|
249
|
+
if (!Number.isFinite(value) || (target.type === 'integer' && outsideIntegerRange)) {
|
|
250
|
+
reject(path, 'initial numeric value is outside the supported finite/integer range');
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
else if (target.type === 'boolean') {
|
|
254
|
+
if (typeof value !== 'boolean')
|
|
255
|
+
reject(path, 'initial boolean value must be a JSON boolean');
|
|
256
|
+
}
|
|
257
|
+
else if (target.type === 'string' || Array.isArray(target.type)) {
|
|
258
|
+
if (typeof value !== 'string')
|
|
259
|
+
reject(path, 'initial string value must be a JSON string');
|
|
260
|
+
if (target.format === 'guid' && !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/.test(value)) {
|
|
261
|
+
reject(path, 'initial GUID value must be canonical lowercase text');
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else
|
|
265
|
+
reject(path, 'initial value requires a kernel-backed test');
|
|
266
|
+
}
|
|
208
267
|
static propertyAt(schema, path) {
|
|
209
268
|
return path.split('.').reduce((current, segment) => current?.properties?.[segment], schema);
|
|
210
269
|
}
|
|
@@ -212,8 +271,23 @@ export class ProjectionCapabilities {
|
|
|
212
271
|
return (schema.type === 'number' && (!schema.format || schema.format === 'double')) ||
|
|
213
272
|
(schema.type === 'integer' && ['int32', 'uint32'].includes(schema.format ?? ''));
|
|
214
273
|
}
|
|
274
|
+
static checkProtection(schema, path, reject) {
|
|
275
|
+
if (schema.compliance?.length || schema.security?.length)
|
|
276
|
+
reject(path, 'protected fields require a kernel-backed test');
|
|
277
|
+
for (const [name, property] of Object.entries(schema.properties ?? {}))
|
|
278
|
+
this.checkProtection(property, `${path}.${name}`, reject);
|
|
279
|
+
if (schema.items)
|
|
280
|
+
this.checkProtection(schema.items, `${path}.items`, reject);
|
|
281
|
+
if (schema.additionalProperties && typeof schema.additionalProperties === 'object') {
|
|
282
|
+
this.checkProtection(schema.additionalProperties, `${path}.additionalProperties`, reject);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
215
285
|
static checkSchema(schema, path, reject) {
|
|
216
|
-
if (
|
|
286
|
+
if (schema.compliance?.length || schema.security?.length)
|
|
287
|
+
reject(path, 'protected fields require a kernel-backed test');
|
|
288
|
+
if (!schema.type || schema.type === 'null' || (Array.isArray(schema.type) &&
|
|
289
|
+
(schema.type.length !== 2 || schema.type[0] !== 'string' || schema.type[1] !== 'null')) ||
|
|
290
|
+
(schema.format && !['guid', 'date-time', 'double', 'int32', 'uint32'].includes(schema.format)) ||
|
|
217
291
|
(schema.format === 'date-time' && schema.type !== 'string') ||
|
|
218
292
|
(schema.format === 'guid' && schema.type !== 'string') ||
|
|
219
293
|
(schema.format === 'double' && schema.type !== 'number') ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionCapabilities.js","sourceRoot":"","sources":["../../../testing/projections/ProjectionCapabilities.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,OAAO,EAA6B,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,qDAAqD,CAAC;AACrG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uDAAuD,CAAC;AAEzG,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAE9F,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AAErF,gGAAgG;AAChG,MAAM,OAAO,sBAAsB;IAC/B;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAuC,EAAE,UAAgC;QACrF,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,IAAI,UAAU,CAAC,UAAU,IAAI,WAAW,CAAC,CAAC;QACnF,MAAM,IAAI,GAAG,UAAgD,CAAC;QAC9D,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,QAAiB,EAAU,EAAE;YACvE,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,WAAW,IAAI,OAAO,CAAC;YAClI,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,CAAC,EAAE,WAAW;mBACzG,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,YAAY;gBAC9D,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,oBAAoB;oBACzD,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAClE,MAAM,IAAI,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/E,CAAC,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,MAAM,CAAC,YAAY,EAAE,wCAAwC,CAAC,CAAC;QAC/G,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAC;QACvH,MAAM,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC;QACrH,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC;QAC3E,IAAI,OAAO;YAAE,MAAM,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK;YAAE,MAAM,CAAC,UAAU,EAAE,kDAAkD,CAAC,CAAC;QACpG,IAAI,IAAI,CAAC,eAAe,KAAK,eAAe,CAAC,QAAQ,CAAC,KAAK;YAAE,MAAM,CAAC,iBAAiB,EAAE,0DAA0D,CAAC,CAAC;QACnJ,KAAK,MAAM,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAU,EAAE,CAAC;YAC/E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAiC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBACxH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAgC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,OAAO,IAAI,QAAQ,EAAE,CAAC,CAAC;YACpG,IAAI,KAAK,CAAC,MAAM;gBAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,+BAA+B,CAAC,CAAC;QAC3N,CAAC;QACD,IAAK,IAAI,CAAC,SAAmC,EAAE,MAAM;YAAE,MAAM,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;QAClI,IAAI,IAAI,CAAC,iBAAiB;YAAE,MAAM,CAAC,mBAAmB,EAAE,2DAA2D,CAAC,CAAC;QACrH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAwG,CAAC;QAC1H,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,IAAI,GAAG,EAAE,eAAe;YAC9E,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YAChF,MAAM,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC;eACrF,MAAM,CAAC,WAAW,EAAE,mDAAmD,CAAC,CAAC;QAChF,IAAI,MAAkB,CAAC;QACvB,IAAI,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAe,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,CAAC,kBAAkB,EAAE,qCAAqC,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,UAAU,GAAG,MAAO,CAAC,UAAU,EAAE,EAAE,IAAI,MAAO,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC1F,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACxF,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YACxF,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5F,MAAM,CAAC,qBAAqB,EAAE,4FAA4F,CAAC,CAAC;QAChI,CAAC;QACD,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC,CAAC;QAAC,CAAC;QACpJ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC,CAAC;QACnJ,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAkC,CAAC,EAAE,CAAC;YACjF,MAAM,MAAM,GAAG,MAAO,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;mBACtC,MAAM,CAAC,qBAAqB,QAAQ,EAAE,EAAE,wCAAwC,CAAC,CAAC;YACzF,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,qBAAqB,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,mBAAmB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;oBACpD,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,UAAU,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC;oBAC1E,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,mBAAmB,CAAC,EAAE,CAAC;oBAChF,MAAM,CAAC,qBAAqB,QAAQ,EAAE,EAAE,qEAAqE,CAAC,CAAC;gBACnH,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC9C,MAAM,kBAAkB,GAAG,CAAC,SAA4B,EAAE,IAAY,EAAc,EAAE;YAClF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC/C,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,CAAC,UAAU;gBAAE,MAAM,CAAC,IAAI,EAAE,6EAA6E,CAAC,CAAC;YAC7J,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;YACtH,OAAO,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAoB,IAAI,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAkC,IAAI,EAAE,CAAC;QAClE,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;YAC5E,MAAM,IAAI,GAAG,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,gBAAgB;gBAAE,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,wCAAwC,CAAC,CAAC;YAC1G,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS;gBAAE,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,0CAA0C,CAAC,CAAC;YACnG,IAAI,OAAO,KAAK,aAAa;gBAAE,SAAS;YACxC,MAAM,UAAU,GAAI,KAAoB,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;YAChE,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9D,MAAM,WAAW,GAAG,GAAG,IAAI,eAAe,QAAQ,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,MAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YACvF,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAC3E,4EAA4E,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YACnG,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrD,IAAI,CAAC,YAAY,CAAC,MAAO,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,mBAA+B,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAClH,CAAC;QACL,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,YAAY,CACvB,WAAuB,EAAE,WAAuB,EAAE,QAAgC,EAAE,UAAoB,EACxG,IAAY,EAAE,MAA+C;QAE7D,KAAK,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;YACvE,IAAI,WAAW,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAAE,SAAS;YAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;YAClI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,CAAC,GAAG,IAAI,YAAY,WAAW,EAAE,EAAE,yCAAyC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtI,IAAI,UAAU,CAAC,MAAM;gBAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,YAAY,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7I,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,YAAY,CACvB,WAAuB,EAAE,WAAuB,EAAE,WAAmB,EAAE,UAAkB,EACzF,IAAY,EAAE,MAA+C;QAE7D,MAAM,IAAI,GAAG,CAAC,MAAc,EAAS,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,UAAU,MAAM,MAAM,EAAE,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC;eAC7C,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACjF,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACtI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,UAAU,KAAK,gBAAgB,IAAI,UAAU,KAAK,OAAO;YAAE,OAAO;QACtE,IAAI,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC1C,IAAI,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC;gBAAE,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACxH,MAAM,IAAI,GAAG,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC;oBACD,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,UAAU;wBAAE,OAAO;gBACpE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,CAAC,KAAK,YAAY,gCAAgC,CAAC;wBAAE,MAAM,KAAK,CAAC;gBAC1E,CAAC;YACL,CAAC;YACD,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,kDAAkD,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW;gBAAE,IAAI,CAAC,wDAAwD,CAAC,CAAC;YAClG,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC9E,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAC9D,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;wBACxF,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxF,IAAI,CAAC,sEAAsE,CAAC,CAAC;gBACjF,CAAC;YACL,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtE,IAAI,CAAC,8CAA8C,CAAC,CAAC;YACzD,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,iEAAiE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnH,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACjD,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7D,IAAI,CAAC,2DAA2D,CAAC,CAAC;YACtE,CAAC;YACD,OAAO;QACX,CAAC;QACD,MAAM,SAAS,GAAG,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5F,IAAI,UAAU,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,sHAAsH,CAAC,CAAC;YACxJ,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;oBAAE,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACjH,CAAC;YACD,OAAO;QACX,CAAC;QACD,IAAI,uCAAuC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACxD,IAAI,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,mBAAmB,UAAU,iDAAiD,CAAC,CAAC;YACzG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAChE,OAAO;QACX,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC,mGAAmG,CAAC,CAAC;QACrH,CAAC;QACD,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC1C,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,MAAkB,EAAE,IAAY;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;IACxH,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,MAAkB;QACrC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YAC/E,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,MAAkB,EAAE,IAAY,EAAE,MAA+C;QACxG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxI,CAAC,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;YAC3D,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;YACtD,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC;YACxD,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,CAAC;YACnF,MAAM,CAAC,IAAI,EAAE,uBAAuB,MAAM,CAAC,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC;QAC9I,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,MAAM,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAAC;QACpH,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;gBAAE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;CACJ"}
|
|
1
|
+
{"version":3,"file":"ProjectionCapabilities.js","sourceRoot":"","sources":["../../../testing/projections/ProjectionCapabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EventContext } from '../../events/EventContext.js';
|
|
2
|
+
import type { JsonSchema } from '../../schemas/JsonSchema.js';
|
|
3
|
+
/** Evaluates validated wire expressions, without executing JavaScript supplied by a definition. */
|
|
4
|
+
export declare class ProjectionExpressionEvaluator {
|
|
5
|
+
static value(expression: string, content: unknown, context: EventContext, target: JsonSchema): unknown;
|
|
6
|
+
static pathValue(value: unknown, path: string): unknown;
|
|
7
|
+
private static contextValue;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ProjectionExpressionEvaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectionExpressionEvaluator.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionExpressionEvaluator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D,mGAAmG;AACnG,qBAAa,6BAA6B;IACtC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAUrG;IAED,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAKtD;IAED,OAAO,CAAC,MAAM,CAAC,YAAY;CA2B9B"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Copyright (c) Cratis. All rights reserved.
|
|
2
|
+
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
|
+
import { Identity } from '../../identity/Identity.js';
|
|
4
|
+
import { ProjectionValueConverter } from './ProjectionValueConverter.js';
|
|
5
|
+
/** Evaluates validated wire expressions, without executing JavaScript supplied by a definition. */
|
|
6
|
+
export class ProjectionExpressionEvaluator {
|
|
7
|
+
static value(expression, content, context, target) {
|
|
8
|
+
if (expression === '$null')
|
|
9
|
+
return null;
|
|
10
|
+
if (expression === '$eventSourceId')
|
|
11
|
+
return ProjectionValueConverter.convert(context.eventSourceId, target);
|
|
12
|
+
if (expression.startsWith('$value(') && expression.endsWith(')')) {
|
|
13
|
+
return ProjectionValueConverter.convert(expression.slice(7, -1), target);
|
|
14
|
+
}
|
|
15
|
+
if (expression.startsWith('$eventContext(') && expression.endsWith(')')) {
|
|
16
|
+
return ProjectionValueConverter.convert(this.contextValue(expression.slice(14, -1), context), target);
|
|
17
|
+
}
|
|
18
|
+
return ProjectionValueConverter.convert(this.pathValue(content, expression), target);
|
|
19
|
+
}
|
|
20
|
+
static pathValue(value, path) {
|
|
21
|
+
return path.split('.').reduce((current, segment) => {
|
|
22
|
+
if (current === null || typeof current !== 'object')
|
|
23
|
+
return null;
|
|
24
|
+
return current[segment] ?? null;
|
|
25
|
+
}, value);
|
|
26
|
+
}
|
|
27
|
+
static contextValue(path, context) {
|
|
28
|
+
const [root, ...members] = path.split('.');
|
|
29
|
+
const roots = {
|
|
30
|
+
SequenceNumber: context.sequenceNumber.toString(), EventSourceId: context.eventSourceId,
|
|
31
|
+
EventStore: context.eventStore, Namespace: context.namespace, EventSourceType: context.eventSourceType,
|
|
32
|
+
EventStreamType: context.eventStreamType, EventStreamId: context.eventStreamId,
|
|
33
|
+
Subject: context.subject ?? context.eventSourceId, Hash: context.hash ?? '', CausedBy: context.causedBy ?? Identity.notSet,
|
|
34
|
+
ObservationState: context.observationState, EventType: context.eventType,
|
|
35
|
+
Occurred: context.occurred, CorrelationId: context.correlationId,
|
|
36
|
+
Causation: context.causation, Tags: context.tags
|
|
37
|
+
};
|
|
38
|
+
let value = roots[root];
|
|
39
|
+
for (const member of members) {
|
|
40
|
+
if (value instanceof Date) {
|
|
41
|
+
if (member === 'Year') {
|
|
42
|
+
value = value.getUTCFullYear();
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (member === 'Month') {
|
|
46
|
+
value = value.getUTCMonth() + 1;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (member === 'Day') {
|
|
50
|
+
value = value.getUTCDate();
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (member === 'Value' && (typeof value !== 'object' || value === null))
|
|
55
|
+
continue;
|
|
56
|
+
if (value === null || typeof value !== 'object')
|
|
57
|
+
return null;
|
|
58
|
+
const object = value;
|
|
59
|
+
value = object[member[0].toLowerCase() + member.slice(1)] ?? object[member] ?? null;
|
|
60
|
+
}
|
|
61
|
+
if (value instanceof Date)
|
|
62
|
+
return value.toISOString();
|
|
63
|
+
if (typeof value === 'bigint')
|
|
64
|
+
return value.toString();
|
|
65
|
+
return value ?? null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=ProjectionExpressionEvaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectionExpressionEvaluator.js","sourceRoot":"","sources":["../../../testing/projections/ProjectionExpressionEvaluator.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAEzE,mGAAmG;AACnG,MAAM,OAAO,6BAA6B;IACtC,MAAM,CAAC,KAAK,CAAC,UAAkB,EAAE,OAAgB,EAAE,OAAqB,EAAE,MAAkB;QACxF,IAAI,UAAU,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,UAAU,KAAK,gBAAgB;YAAE,OAAO,wBAAwB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC5G,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/D,OAAO,wBAAwB,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,OAAO,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1G,CAAC;QACD,OAAO,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IACzF,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAc,EAAE,IAAY;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACxD,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACjE,OAAQ,OAAmC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;QACjE,CAAC,EAAE,KAAK,CAAC,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,IAAY,EAAE,OAAqB;QAC3D,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,KAAK,GAA4B;YACnC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa;YACvF,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe;YACtG,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa;YAC9E,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM;YAC1H,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS;YACxE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa;YAChE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI;SACnD,CAAC;QACF,IAAI,KAAK,GAAY,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;gBACxB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACpE,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;oBAAC,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACtE,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC;YACnE,CAAC;YACD,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;gBAAE,SAAS;YAClF,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC7D,MAAM,MAAM,GAAG,KAAgC,CAAC;YAChD,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QACxF,CAAC;QACD,IAAI,KAAK,YAAY,IAAI;YAAE,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvD,OAAO,KAAK,IAAI,IAAI,CAAC;IACzB,CAAC;CACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ProjectionDefinition } from '@cratis/chronicle.contracts';
|
|
2
|
+
import type { Constructor } from '@cratis/fundamentals';
|
|
3
|
+
import type { CompiledProjectionDefinitions } from '../../projections/CompiledProjectionDefinitions.js';
|
|
4
|
+
import type { IReadModelProcessor } from '../IReadModelProcessor.js';
|
|
5
|
+
import type { ReadModelState } from '../ReadModelState.js';
|
|
6
|
+
import type { ScenarioEvent } from '../ScenarioEvent.js';
|
|
7
|
+
/** In-process interpreter of the validated, registered projection contract subset. */
|
|
8
|
+
export declare class ProjectionReadModelProcessor<TReadModel extends object> implements IReadModelProcessor<TReadModel> {
|
|
9
|
+
private readonly _model;
|
|
10
|
+
private readonly _definition;
|
|
11
|
+
private readonly _schema;
|
|
12
|
+
private readonly _initial;
|
|
13
|
+
private readonly _from;
|
|
14
|
+
private readonly _removed;
|
|
15
|
+
private readonly _eventSchemas;
|
|
16
|
+
private readonly _bindings;
|
|
17
|
+
private _engineState;
|
|
18
|
+
private _publicRead;
|
|
19
|
+
constructor(_model: Constructor<TReadModel>, compiled: CompiledProjectionDefinitions, _definition: ProjectionDefinition);
|
|
20
|
+
/** A snapshot of the production-style in-memory sink, for kernel conformance fixtures. */
|
|
21
|
+
get engineState(): Record<string, Record<string, unknown>>;
|
|
22
|
+
/** A schema-normalized keyed read, for kernel conformance fixtures. */
|
|
23
|
+
get publicRead(): Record<string, Record<string, unknown>>;
|
|
24
|
+
process(events: readonly ScenarioEvent[]): Promise<Map<string, ReadModelState<TReadModel>>>;
|
|
25
|
+
private keyFor;
|
|
26
|
+
private initialState;
|
|
27
|
+
private normalize;
|
|
28
|
+
private materialize;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ProjectionReadModelProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectionReadModelProcessor.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionReadModelProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAKxG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,sFAAsF;AACtF,qBAAa,4BAA4B,CAAC,UAAU,SAAS,MAAM,CAAE,YAAW,mBAAmB,CAAC,UAAU,CAAC;IAU/F,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAoE,OAAO,CAAC,QAAQ,CAAC,WAAW;IATnI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;IAC3G,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,WAAW,CAA+C;IAElE,YAA6B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAmB,WAAW,EAAE,oBAAoB,EAgBxJ;IAED,0FAA0F;IAC1F,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAA+C;IACzG,uEAAuE;IACvE,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAA8C;IAEjG,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAkDhG;IAED,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,WAAW;CAGtB"}
|