@cratis/chronicle 6.18.0 → 6.19.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/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/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/index.d.ts +1 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -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/package.json +1 -1
- package/testing/IReadModelProcessor.ts +10 -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/index.ts +1 -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,7 @@
|
|
|
1
|
+
import type { ReadModelState } from './ReadModelState.js';
|
|
2
|
+
import type { ScenarioEvent } from './ScenarioEvent.js';
|
|
3
|
+
/** Replays the complete serialized scenario history for independent event sources. */
|
|
4
|
+
export interface IReadModelProcessor<TReadModel extends object> {
|
|
5
|
+
process(events: readonly ScenarioEvent[]): Promise<Map<string, ReadModelState<TReadModel>>>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=IReadModelProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IReadModelProcessor.d.ts","sourceRoot":"","sources":["../../testing/IReadModelProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,sFAAsF;AACtF,MAAM,WAAW,mBAAmB,CAAC,UAAU,SAAS,MAAM;IAC1D,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAC/F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IReadModelProcessor.js","sourceRoot":"","sources":["../../testing/IReadModelProcessor.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
|
|
@@ -2,19 +2,18 @@ import 'reflect-metadata';
|
|
|
2
2
|
import type { Constructor } from '@cratis/fundamentals';
|
|
3
3
|
import type { IClientArtifactsProvider } from '../artifacts/IClientArtifactsProvider.js';
|
|
4
4
|
import { ReadModelScenarioGivenBuilder } from './ReadModelScenarioGivenBuilder.js';
|
|
5
|
-
type ScenarioArtifacts = Pick<IClientArtifactsProvider, 'reducers' | 'eventTypes' | 'projections'
|
|
5
|
+
type ScenarioArtifacts = Pick<IClientArtifactsProvider, 'reducers' | 'eventTypes' | 'projections'> & Partial<Pick<IClientArtifactsProvider, 'readModels' | 'globalForHandlers'>>;
|
|
6
6
|
/**
|
|
7
|
-
* Folds seeded events through a reducer
|
|
8
|
-
*
|
|
7
|
+
* Folds seeded events through a reducer or a validated flat projection, without a Chronicle kernel.
|
|
8
|
+
* Observer scheduling, storage, migrations, and compliance are not simulated.
|
|
9
9
|
* Supply an artifact catalog to isolate a scenario from process-wide decorator discovery.
|
|
10
10
|
*/
|
|
11
11
|
export declare class ReadModelScenario<TReadModel extends object> {
|
|
12
|
-
private readonly
|
|
13
|
-
private readonly
|
|
14
|
-
private readonly _dispatcher;
|
|
12
|
+
private readonly _processor;
|
|
13
|
+
private readonly _modelName;
|
|
15
14
|
private readonly _events;
|
|
16
15
|
private _results;
|
|
17
|
-
/** Selects the reducer
|
|
16
|
+
/** Selects the reducer (when present) or a single applicable compiled projection. */
|
|
18
17
|
constructor(readModelType: Constructor<TReadModel>, artifacts?: ScenarioArtifacts);
|
|
19
18
|
/** Fluent entry point for event history. */
|
|
20
19
|
get given(): ReadModelScenarioGivenBuilder<TReadModel>;
|
|
@@ -27,7 +26,6 @@ export declare class ReadModelScenario<TReadModel extends object> {
|
|
|
27
26
|
/** Collects events for a source; subsequent reads replay the complete seeded history. */
|
|
28
27
|
collectEventsFor(id: string, events: readonly object[]): void;
|
|
29
28
|
private process;
|
|
30
|
-
private reduce;
|
|
31
29
|
}
|
|
32
30
|
export {};
|
|
33
31
|
//# sourceMappingURL=ReadModelScenario.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadModelScenario.d.ts","sourceRoot":"","sources":["../../testing/ReadModelScenario.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReadModelScenario.d.ts","sourceRoot":"","sources":["../../testing/ReadModelScenario.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAazF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AAQnF,KAAK,iBAAiB,GAAG,IAAI,CAAC,wBAAwB,EAAE,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC,GAC9F,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC;AAEhF;;;;GAIG;AACH,qBAAa,iBAAiB,CAAC,UAAU,SAAS,MAAM;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAA+D;IAE/E,qFAAqF;IACrF,YAAY,aAAa,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,iBAAiB,EAwChF;IAED,4CAA4C;IAC5C,IAAI,KAAK,IAAI,6BAA6B,CAAC,UAAU,CAAC,CAErD;IAED,yEAAyE;IACzE,IAAI,QAAQ,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAQzC;IAED,4FAA4F;IACtF,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAErE;IAED,yEAAyE;IACnE,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE7D;IAED,yFAAyF;IACzF,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CA0B5D;IAED,OAAO,CAAC,OAAO;CAUlB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
3
3
|
import 'reflect-metadata';
|
|
4
4
|
import { JsonSerializer } from '@cratis/fundamentals';
|
|
5
|
+
import { DefaultClientArtifactsProvider } from '../artifacts/DefaultClientArtifactsProvider.js';
|
|
5
6
|
import { getEventTypeMetadata } from '../events/eventTypeDecorator.js';
|
|
6
7
|
import { getFromEventMetadata } from '../projections/modelBound/fromEvent.js';
|
|
7
8
|
import { getRemovedWithClassMetadata } from '../projections/modelBound/removedWith.js';
|
|
@@ -10,47 +11,65 @@ import { getClearWithClassMetadata } from '../projections/modelBound/clearWith.j
|
|
|
10
11
|
import { getVariantOfMetadata } from '../projections/modelBound/variantOf.js';
|
|
11
12
|
import { getEntersOnMetadata } from '../projections/modelBound/entersOn.js';
|
|
12
13
|
import { getProjectionMetadata } from '../projections/declarative/projection.js';
|
|
14
|
+
import { ProjectionDefinitionCompiler } from '../projections/ProjectionDefinitionCompiler.js';
|
|
15
|
+
import { getReadModelId } from '../readModels/readModel.js';
|
|
13
16
|
import { getReducerMetadata } from '../reducers/reducer.js';
|
|
14
|
-
import { ReducerEventDispatcher } from '../reducers/ReducerEventDispatcher.js';
|
|
15
|
-
import { DecoratorType } from '../types/DecoratorType.js';
|
|
16
17
|
import { hasModelBoundProperties, TypeDiscoverer } from '../types/TypeDiscoverer.js';
|
|
17
18
|
import { ReadModelScenarioGivenBuilder } from './ReadModelScenarioGivenBuilder.js';
|
|
19
|
+
import { ReducerReadModelProcessor } from './ReducerReadModelProcessor.js';
|
|
20
|
+
import { ProjectionReadModelProcessor } from './projections/ProjectionReadModelProcessor.js';
|
|
21
|
+
import { UnsupportedProjectionOperation } from './projections/UnsupportedProjectionOperation.js';
|
|
18
22
|
/**
|
|
19
|
-
* Folds seeded events through a reducer
|
|
20
|
-
*
|
|
23
|
+
* Folds seeded events through a reducer or a validated flat projection, without a Chronicle kernel.
|
|
24
|
+
* Observer scheduling, storage, migrations, and compliance are not simulated.
|
|
21
25
|
* Supply an artifact catalog to isolate a scenario from process-wide decorator discovery.
|
|
22
26
|
*/
|
|
23
27
|
export class ReadModelScenario {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
_dispatcher;
|
|
28
|
+
_processor;
|
|
29
|
+
_modelName;
|
|
27
30
|
_events = [];
|
|
28
31
|
_results;
|
|
29
|
-
/** Selects the reducer
|
|
32
|
+
/** Selects the reducer (when present) or a single applicable compiled projection. */
|
|
30
33
|
constructor(readModelType, artifacts) {
|
|
31
|
-
this.
|
|
32
|
-
const registered = artifacts ??
|
|
33
|
-
reducers: TypeDiscoverer.default.getTypesByDecoratorType(DecoratorType.Reducer),
|
|
34
|
-
eventTypes: TypeDiscoverer.default.getTypesByDecoratorType(DecoratorType.EventType),
|
|
35
|
-
projections: TypeDiscoverer.default.getTypesByDecoratorType(DecoratorType.Projection)
|
|
36
|
-
};
|
|
34
|
+
this._modelName = readModelType.name;
|
|
35
|
+
const registered = artifacts ?? new DefaultClientArtifactsProvider(TypeDiscoverer.default);
|
|
37
36
|
const reducerTypes = registered.reducers.filter(type => getReducerMetadata(type)?.readModel === readModelType);
|
|
38
37
|
if (reducerTypes.length > 1) {
|
|
39
38
|
throw new Error(`Multiple reducers found for read model '${readModelType.name}'.`);
|
|
40
39
|
}
|
|
41
|
-
if (reducerTypes.length
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
if (reducerTypes.length) {
|
|
41
|
+
this._processor = new ReducerReadModelProcessor(readModelType, reducerTypes[0], registered.eventTypes);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const modelBound = getFromEventMetadata(readModelType).length > 0 || hasModelBoundProperties(readModelType) ||
|
|
45
|
+
getRemovedWithClassMetadata(readModelType).length > 0 || getRemovedWithJoinClassMetadata(readModelType).length > 0 ||
|
|
46
|
+
getClearWithClassMetadata(readModelType).length > 0 || getVariantOfMetadata(readModelType) !== undefined ||
|
|
47
|
+
getEntersOnMetadata(readModelType).length > 0;
|
|
48
|
+
// Definitions without a declared model can be associated by the registration compiler's
|
|
49
|
+
// unambiguous schema inference; never guess their association from decorators here.
|
|
50
|
+
const declarative = registered.projections.filter(type => {
|
|
51
|
+
const metadata = getProjectionMetadata(type);
|
|
52
|
+
return metadata !== undefined && (metadata.readModelType === readModelType ||
|
|
53
|
+
(metadata.readModelType === undefined && registered.readModels?.includes(readModelType)));
|
|
54
|
+
});
|
|
55
|
+
if (Number(modelBound) + declarative.filter(type => getProjectionMetadata(type)?.readModelType === readModelType).length > 1) {
|
|
56
|
+
throw new Error(`Multiple projections found for read model '${readModelType.name}'.`);
|
|
57
|
+
}
|
|
58
|
+
if (!modelBound && !declarative.length) {
|
|
59
|
+
throw new Error(`No reducer or projection found for read model '${readModelType.name}'.`);
|
|
60
|
+
}
|
|
61
|
+
const catalog = {
|
|
62
|
+
eventTypes: registered.eventTypes, reducers: registered.reducers, projections: declarative,
|
|
63
|
+
readModels: [...new Set([...(registered.readModels ?? []), readModelType])],
|
|
64
|
+
globalForHandlers: artifacts?.globalForHandlers ?? [], reactors: [], seeders: [], constraints: [],
|
|
65
|
+
webhooks: [], eventTypeMigrations: []
|
|
66
|
+
};
|
|
67
|
+
const compiled = new ProjectionDefinitionCompiler(catalog, 'scenario').compile(declarative, modelBound ? [readModelType] : []);
|
|
68
|
+
const definitions = compiled.definitions.filter(definition => definition.ReadModel === getReadModelId(readModelType));
|
|
69
|
+
if (definitions.length !== 1) {
|
|
70
|
+
throw new Error(`Expected one projection for read model '${readModelType.name}', found ${definitions.length}.`);
|
|
51
71
|
}
|
|
52
|
-
this.
|
|
53
|
-
this._dispatcher = new ReducerEventDispatcher(this._reducerType, registered.eventTypes);
|
|
72
|
+
this._processor = new ProjectionReadModelProcessor(readModelType, compiled, definitions[0]);
|
|
54
73
|
}
|
|
55
74
|
/** Fluent entry point for event history. */
|
|
56
75
|
get given() {
|
|
@@ -106,32 +125,13 @@ export class ReadModelScenario {
|
|
|
106
125
|
process() {
|
|
107
126
|
if (!this._results) {
|
|
108
127
|
const events = [...this._events];
|
|
109
|
-
this._results = this.
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
async reduce(events) {
|
|
114
|
-
const results = new Map();
|
|
115
|
-
const reducer = new this._reducerType();
|
|
116
|
-
for (const event of events) {
|
|
117
|
-
const handler = this._dispatcher.handlerFor(event.context.eventType.id.value);
|
|
118
|
-
if (!handler)
|
|
119
|
-
continue;
|
|
120
|
-
const prior = results.get(event.sourceId);
|
|
121
|
-
const previous = prior?.deleted ? undefined : prior?.instance;
|
|
122
|
-
let next;
|
|
123
|
-
try {
|
|
124
|
-
next = await this._dispatcher.invoke(reducer, handler, event.content, previous, event.context);
|
|
125
|
-
}
|
|
126
|
-
catch (cause) {
|
|
127
|
-
throw new Error(`Reducer '${this._reducerType.name}' for read model '${this._readModelType.name}' failed`, { cause });
|
|
128
|
-
}
|
|
129
|
-
results.set(event.sourceId, {
|
|
130
|
-
instance: next === undefined ? null : next,
|
|
131
|
-
deleted: next === undefined
|
|
128
|
+
this._results = this._processor.process(events).catch(error => {
|
|
129
|
+
if (!(this._processor instanceof ProjectionReadModelProcessor) || error instanceof UnsupportedProjectionOperation)
|
|
130
|
+
throw error;
|
|
131
|
+
throw new Error(`Projection replay for read model '${this._modelName}' failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
132
132
|
});
|
|
133
133
|
}
|
|
134
|
-
return
|
|
134
|
+
return this._results;
|
|
135
135
|
}
|
|
136
136
|
}
|
|
137
137
|
//# sourceMappingURL=ReadModelScenario.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadModelScenario.js","sourceRoot":"","sources":["../../testing/ReadModelScenario.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReadModelScenario.js","sourceRoot":"","sources":["../../testing/ReadModelScenario.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadModelState.d.ts","sourceRoot":"","sources":["../../testing/ReadModelState.ts"],"names":[],"mappings":"AAGA,qEAAqE;AACrE,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReadModelState.js","sourceRoot":"","sources":["../../testing/ReadModelState.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Constructor } from '@cratis/fundamentals';
|
|
2
|
+
import type { IReadModelProcessor } from './IReadModelProcessor.js';
|
|
3
|
+
import type { ReadModelState } from './ReadModelState.js';
|
|
4
|
+
import type { ScenarioEvent } from './ScenarioEvent.js';
|
|
5
|
+
/** Preserves the SDK reducer dispatch and the scenario's null-versus-deletion semantics. */
|
|
6
|
+
export declare class ReducerReadModelProcessor<TReadModel extends object> implements IReadModelProcessor<TReadModel> {
|
|
7
|
+
private readonly _readModelType;
|
|
8
|
+
private readonly _reducerType;
|
|
9
|
+
private readonly _dispatcher;
|
|
10
|
+
constructor(_readModelType: Constructor<TReadModel>, _reducerType: Constructor, eventTypes: Constructor[]);
|
|
11
|
+
process(events: readonly ScenarioEvent[]): Promise<Map<string, ReadModelState<TReadModel>>>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ReducerReadModelProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReducerReadModelProcessor.d.ts","sourceRoot":"","sources":["../../testing/ReducerReadModelProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,4FAA4F;AAC5F,qBAAa,yBAAyB,CAAC,UAAU,SAAS,MAAM,CAAE,YAAW,mBAAmB,CAAC,UAAU,CAAC;IAG5F,OAAO,CAAC,QAAQ,CAAC,cAAc;IAA2B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFnG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IAErD,YAA6B,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC,EAAmB,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,EAE1I;IAEK,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAoBhG;CACJ"}
|
|
@@ -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"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { ReadModelScenario } from './ReadModelScenario.js';
|
|
2
2
|
export { ReadModelScenarioGiven } from './ReadModelScenarioGiven.js';
|
|
3
3
|
export { ReadModelScenarioGivenBuilder } from './ReadModelScenarioGivenBuilder.js';
|
|
4
|
+
export { UnsupportedProjectionOperation } from './projections/UnsupportedProjectionOperation.js';
|
|
4
5
|
//# 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,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
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
export { ReadModelScenario } from './ReadModelScenario.js';
|
|
4
4
|
export { ReadModelScenarioGiven } from './ReadModelScenarioGiven.js';
|
|
5
5
|
export { ReadModelScenarioGivenBuilder } from './ReadModelScenarioGivenBuilder.js';
|
|
6
|
+
export { UnsupportedProjectionOperation } from './projections/UnsupportedProjectionOperation.js';
|
|
6
7
|
//# 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,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"}
|