@cratis/chronicle 6.42.0 → 6.42.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/dist/events/tagDecorator.d.ts +2 -2
- package/dist/events/tagDecorator.js +2 -2
- package/dist/projections/ProjectionDefinitionCompiler.d.ts.map +1 -1
- package/dist/projections/ProjectionDefinitionCompiler.js +3 -1
- package/dist/projections/ProjectionDefinitionCompiler.js.map +1 -1
- package/events/tagDecorator.ts +2 -2
- package/package.json +2 -2
- package/projections/ProjectionDefinitionCompiler.ts +3 -1
- package/projections/for_ProjectionDefinitionCompiler/when_compiling_tags/with_legacy_decorators.legacy.spec.ts +87 -0
- package/projections/for_ProjectionDefinitionCompiler/when_compiling_tags/with_standard_decorators.standard.spec.ts +77 -0
- package/reactors/for_Reactors/against_a_kernel/when_replaying_once_only_reactors.integration.spec.ts +22 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import { Tag } from './Tag.js';
|
|
3
3
|
/**
|
|
4
|
-
* TypeScript decorator that labels an event type, reactor, or
|
|
4
|
+
* TypeScript decorator that labels an event type, reactor, reducer, projection class, or model-bound read model with one or more tags.
|
|
5
5
|
* This is the TypeScript equivalent of the C# `[Tag]` attribute.
|
|
6
6
|
*
|
|
7
7
|
* Applying the decorator more than once accumulates tags rather than replacing them, so
|
|
@@ -21,7 +21,7 @@ import { Tag } from './Tag.js';
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function tag(...values: string[]): ClassDecorator;
|
|
23
23
|
/**
|
|
24
|
-
* TypeScript decorator that labels an event type, reactor, or
|
|
24
|
+
* TypeScript decorator that labels an event type, reactor, reducer, projection class, or model-bound read model with one or more tags.
|
|
25
25
|
* This is the TypeScript equivalent of the C# `[Tags]` attribute, and behaves identically to
|
|
26
26
|
* {@link tag} - use whichever reads more naturally at the call site.
|
|
27
27
|
*
|
|
@@ -6,7 +6,7 @@ import { mergeTags } from './mergeTags.js';
|
|
|
6
6
|
/** Metadata key used to store the tags labeling a class. */
|
|
7
7
|
const TAGS_METADATA_KEY = 'chronicle:tags';
|
|
8
8
|
/**
|
|
9
|
-
* TypeScript decorator that labels an event type, reactor, or
|
|
9
|
+
* TypeScript decorator that labels an event type, reactor, reducer, projection class, or model-bound read model with one or more tags.
|
|
10
10
|
* This is the TypeScript equivalent of the C# `[Tag]` attribute.
|
|
11
11
|
*
|
|
12
12
|
* Applying the decorator more than once accumulates tags rather than replacing them, so
|
|
@@ -28,7 +28,7 @@ export function tag(...values) {
|
|
|
28
28
|
return (target) => addTags(target, values);
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
* TypeScript decorator that labels an event type, reactor, or
|
|
31
|
+
* TypeScript decorator that labels an event type, reactor, reducer, projection class, or model-bound read model with one or more tags.
|
|
32
32
|
* This is the TypeScript equivalent of the C# `[Tags]` attribute, and behaves identically to
|
|
33
33
|
* {@link tag} - use whichever reads more naturally at the call site.
|
|
34
34
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionDefinitionCompiler.d.ts","sourceRoot":"","sources":["../../projections/ProjectionDefinitionCompiler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectionDefinitionCompiler.d.ts","sourceRoot":"","sources":["../../projections/ProjectionDefinitionCompiler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAOjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAMpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AA6CnF,wGAAwG;AACxG,qBAAa,4BAA4B;IAOjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC;IAR5C;;;;OAIG;IACH,YACqB,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,MAAM,EAC1B,sBAAsB,CAAC,EAAE,qBAAqB,YAAA,EAC/D;IAEJ;;;;;OAKG;IACH,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,6BAA6B,CAiC5G;IAED,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,yBAAyB;IAiCjC,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,0BAA0B;IA8ClC,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,yBAAyB;IAqNjC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,eAAe;IAevB,yFAAyF;IACzF,OAAO,CAAC,wBAAwB;CASnC"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import { AutoMap, ReadModelObserverType } from '@cratis/chronicle.contracts';
|
|
4
4
|
import { EventSequenceId } from '../eventSequences/EventSequenceId.js';
|
|
5
5
|
import { getEventTypeFor, getEventTypeJsonSchemaFor } from '../events/eventTypeDecorator.js';
|
|
6
|
+
import { getTagsFor } from '../events/tagDecorator.js';
|
|
6
7
|
import { getReadModelMetadata } from '../readModels/index.js';
|
|
7
8
|
import { getReadModelId } from '../readModels/readModel.js';
|
|
8
9
|
import { buildReadModelDefinition } from '../readModels/buildReadModelDefinition.js';
|
|
@@ -196,6 +197,7 @@ export class ProjectionDefinitionCompiler {
|
|
|
196
197
|
const instance = new type();
|
|
197
198
|
instance.define(builder);
|
|
198
199
|
const definition = builder.build(metadata.id.value, type.name);
|
|
200
|
+
definition.Tags = getTagsFor(type).map(tag => tag.value).sort();
|
|
199
201
|
const explicitReadModelIdentifier = definition.ReadModel;
|
|
200
202
|
if (explicitReadModelIdentifier === type.name) {
|
|
201
203
|
if (metadata.readModelType) {
|
|
@@ -424,7 +426,7 @@ export class ProjectionDefinitionCompiler {
|
|
|
424
426
|
RemovedWith: Array.from(removedWithByEventType.values()),
|
|
425
427
|
RemovedWithJoin: Array.from(removedWithJoinByEventType.values()),
|
|
426
428
|
LastUpdated: { Value: '' },
|
|
427
|
-
Tags:
|
|
429
|
+
Tags: getTagsFor(type).map(tag => tag.value).sort(),
|
|
428
430
|
AutoMap: isNoAutoMap(type) ? AutoMap.Disabled : AutoMap.Enabled,
|
|
429
431
|
NoAutoMapProperties: properties.filter(property => isPropertyNoAutoMap(prototype, property)),
|
|
430
432
|
Nested: nestedByProperty
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionDefinitionCompiler.js","sourceRoot":"","sources":["../../projections/ProjectionDefinitionCompiler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectionDefinitionCompiler.js","sourceRoot":"","sources":["../../projections/ProjectionDefinitionCompiler.ts"],"names":[],"mappings":"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"}
|
package/events/tagDecorator.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { mergeTags } from './mergeTags.js';
|
|
|
9
9
|
const TAGS_METADATA_KEY = 'chronicle:tags';
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* TypeScript decorator that labels an event type, reactor, or
|
|
12
|
+
* TypeScript decorator that labels an event type, reactor, reducer, projection class, or model-bound read model with one or more tags.
|
|
13
13
|
* This is the TypeScript equivalent of the C# `[Tag]` attribute.
|
|
14
14
|
*
|
|
15
15
|
* Applying the decorator more than once accumulates tags rather than replacing them, so
|
|
@@ -32,7 +32,7 @@ export function tag(...values: string[]): ClassDecorator {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* TypeScript decorator that labels an event type, reactor, or
|
|
35
|
+
* TypeScript decorator that labels an event type, reactor, reducer, projection class, or model-bound read model with one or more tags.
|
|
36
36
|
* This is the TypeScript equivalent of the C# `[Tags]` attribute, and behaves identically to
|
|
37
37
|
* {@link tag} - use whichever reads more naturally at the call site.
|
|
38
38
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cratis/chronicle",
|
|
3
|
-
"version": "6.42.
|
|
3
|
+
"version": "6.42.1",
|
|
4
4
|
"description": "Event sourcing for TypeScript and Node.js — the idiomatic client for Cratis Chronicle, the open-source event-sourcing database",
|
|
5
5
|
"author": "Cratis",
|
|
6
6
|
"license": "MIT",
|
|
@@ -173,7 +173,7 @@
|
|
|
173
173
|
"clean": "rm -rf dist",
|
|
174
174
|
"test": "vitest run",
|
|
175
175
|
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
176
|
-
"test:standard-types": "tsc --ignoreConfig --noEmit --target es2022 --module es2022 --moduleResolution bundler --lib es2022,esnext.decorators --types node --skipLibCheck --strict schemas/decorators.standard.spec.ts projections/declarative/addChildCompatibility.standard.spec.ts projections/modelBound/decorators.standard.spec.ts events/classDecorators.standard.spec.ts reactors/decorators.standard.spec.ts readModels/standardFallbacks.standard.spec.ts readModels/registration.standard.spec.ts for_ChronicleClient/when_registering_artifacts/with_standard_property_mappings.standard.spec.ts artifacts/validateArtifactSchemas.spec.ts testing/for_EventScenario/when_appending_concept_fields/with_standard_decorators.standard.spec.ts testing/for_EventScenario/when_appending_scoped_constraints/with_standard_decorators.standard.spec.ts schemas/for_JsonSchemaGenerator/when_generating_children/with_standard_decorators.standard.spec.ts events/for_handles/when_decorating_a_method.standard.spec.ts testing/for_ReadModelScenario/when_evaluating_arithmetic/with_standard_decorators.standard.spec.ts testing/for_ReadModelScenario/when_evaluating_joins/with_standard_decorators.standard.spec.ts testing/for_EventScenario/when_appending_field_types/with_standard_decorators.standard.spec.ts eventSequences/for_EventSequence/when_appending/with_subject_annotations.standard.spec.ts projections/for_ProjectionDefinitionCompiler/when_compiling_from_all.standard.spec.ts",
|
|
176
|
+
"test:standard-types": "tsc --ignoreConfig --noEmit --target es2022 --module es2022 --moduleResolution bundler --lib es2022,esnext.decorators --types node --skipLibCheck --strict schemas/decorators.standard.spec.ts projections/declarative/addChildCompatibility.standard.spec.ts projections/modelBound/decorators.standard.spec.ts events/classDecorators.standard.spec.ts reactors/decorators.standard.spec.ts readModels/standardFallbacks.standard.spec.ts readModels/registration.standard.spec.ts for_ChronicleClient/when_registering_artifacts/with_standard_property_mappings.standard.spec.ts artifacts/validateArtifactSchemas.spec.ts testing/for_EventScenario/when_appending_concept_fields/with_standard_decorators.standard.spec.ts testing/for_EventScenario/when_appending_scoped_constraints/with_standard_decorators.standard.spec.ts schemas/for_JsonSchemaGenerator/when_generating_children/with_standard_decorators.standard.spec.ts events/for_handles/when_decorating_a_method.standard.spec.ts testing/for_ReadModelScenario/when_evaluating_arithmetic/with_standard_decorators.standard.spec.ts testing/for_ReadModelScenario/when_evaluating_joins/with_standard_decorators.standard.spec.ts testing/for_EventScenario/when_appending_field_types/with_standard_decorators.standard.spec.ts eventSequences/for_EventSequence/when_appending/with_subject_annotations.standard.spec.ts projections/for_ProjectionDefinitionCompiler/when_compiling_from_all.standard.spec.ts projections/for_ProjectionDefinitionCompiler/when_compiling_tags/with_standard_decorators.standard.spec.ts",
|
|
177
177
|
"test:native": "node ./scripts/check-native-esm.mjs"
|
|
178
178
|
},
|
|
179
179
|
"dependencies": {
|
|
@@ -6,6 +6,7 @@ import { Constructor } from '@cratis/fundamentals';
|
|
|
6
6
|
import { IClientArtifactsProvider } from '../artifacts/index.js';
|
|
7
7
|
import { EventSequenceId } from '../eventSequences/EventSequenceId.js';
|
|
8
8
|
import { getEventTypeFor, getEventTypeJsonSchemaFor } from '../events/eventTypeDecorator.js';
|
|
9
|
+
import { getTagsFor } from '../events/tagDecorator.js';
|
|
9
10
|
import { getReadModelMetadata } from '../readModels/index.js';
|
|
10
11
|
import { getReadModelId } from '../readModels/readModel.js';
|
|
11
12
|
import { buildReadModelDefinition } from '../readModels/buildReadModelDefinition.js';
|
|
@@ -211,6 +212,7 @@ export class ProjectionDefinitionCompiler {
|
|
|
211
212
|
const instance = new type() as IProjectionFor<unknown>;
|
|
212
213
|
instance.define(builder);
|
|
213
214
|
const definition = builder.build(metadata.id.value, type.name) as Record<string, unknown>;
|
|
215
|
+
definition.Tags = getTagsFor(type).map(tag => tag.value).sort();
|
|
214
216
|
|
|
215
217
|
const explicitReadModelIdentifier = definition.ReadModel as string;
|
|
216
218
|
if (explicitReadModelIdentifier === type.name) {
|
|
@@ -450,7 +452,7 @@ export class ProjectionDefinitionCompiler {
|
|
|
450
452
|
RemovedWith: Array.from(removedWithByEventType.values()),
|
|
451
453
|
RemovedWithJoin: Array.from(removedWithJoinByEventType.values()),
|
|
452
454
|
LastUpdated: { Value: '' },
|
|
453
|
-
Tags:
|
|
455
|
+
Tags: getTagsFor(type).map(tag => tag.value).sort(),
|
|
454
456
|
AutoMap: isNoAutoMap(type) ? AutoMap.Disabled : AutoMap.Enabled,
|
|
455
457
|
NoAutoMapProperties: properties.filter(property => isPropertyNoAutoMap(prototype, property)),
|
|
456
458
|
Nested: nestedByProperty
|
|
@@ -0,0 +1,87 @@
|
|
|
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
|
+
|
|
4
|
+
import { chai, describe, it, vi } from 'vitest';
|
|
5
|
+
import type { IClientArtifactsProvider } from '../../../artifacts/index.js';
|
|
6
|
+
import type { ChronicleConnection } from '../../../connection/index.js';
|
|
7
|
+
import { eventType } from '../../../events/eventTypeDecorator.js';
|
|
8
|
+
import { getTagsFor, tag, tags } from '../../../events/tagDecorator.js';
|
|
9
|
+
import { ReadModelScenario } from '../../../testing/ReadModelScenario.js';
|
|
10
|
+
import type { IProjectionBuilderFor } from '../../declarative/IProjectionBuilderFor.js';
|
|
11
|
+
import { projection } from '../../declarative/projection.js';
|
|
12
|
+
import { fromEvent } from '../../modelBound/fromEvent.js';
|
|
13
|
+
import { ProjectionDefinitionCompiler } from '../../ProjectionDefinitionCompiler.js';
|
|
14
|
+
import { Projections } from '../../Projections.js';
|
|
15
|
+
|
|
16
|
+
chai.should();
|
|
17
|
+
|
|
18
|
+
@eventType('legacy-projection-tags-renamed')
|
|
19
|
+
class Renamed {
|
|
20
|
+
name = 'updated';
|
|
21
|
+
}
|
|
22
|
+
function createArtifacts(modelBound: boolean, values: string[] = []) {
|
|
23
|
+
@tag(...(modelBound ? values : ['read-model-only']))
|
|
24
|
+
class Model {
|
|
25
|
+
static readonly readModelId = 'legacy-projection-tags-model';
|
|
26
|
+
id = '';
|
|
27
|
+
name = '';
|
|
28
|
+
}
|
|
29
|
+
@projection('legacy-projection-tags-projection', Model)
|
|
30
|
+
@tag(...(modelBound ? [] : values))
|
|
31
|
+
class ModelProjection {
|
|
32
|
+
define(builder: IProjectionBuilderFor<Model>): void {
|
|
33
|
+
builder.from(Renamed);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (modelBound) fromEvent(Renamed)(Model);
|
|
37
|
+
const observer = modelBound ? Model : ModelProjection;
|
|
38
|
+
const artifacts: IClientArtifactsProvider = {
|
|
39
|
+
eventTypes: [Renamed], readModels: [Model], projections: modelBound ? [] : [ModelProjection],
|
|
40
|
+
reducers: [], reactors: [], globalForHandlers: [], seeders: [], constraints: [], webhooks: [], eventTypeMigrations: []
|
|
41
|
+
};
|
|
42
|
+
const compile = () => new ProjectionDefinitionCompiler(artifacts, 'test-sink')
|
|
43
|
+
.compile(artifacts.projections, modelBound ? [Model] : []).definitions[0];
|
|
44
|
+
return { artifacts, observer, Model, compile };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
for (const modelBound of [false, true]) {
|
|
48
|
+
describe(`when compiling tags on a legacy ${modelBound ? 'model-bound read model' : 'declarative projection class'}`, () => {
|
|
49
|
+
it('should send accumulated distinct observer labels to the kernel in stable order', async () => {
|
|
50
|
+
const { artifacts, observer } = createArtifacts(modelBound, ['reporting', 'analytics']);
|
|
51
|
+
tags('reporting', 'audit')(observer);
|
|
52
|
+
tag('analytics')(observer);
|
|
53
|
+
const register = vi.fn().mockResolvedValue({});
|
|
54
|
+
const connection = { projections: { register }, readModels: { registerMany: vi.fn().mockResolvedValue({}) } } as unknown as ChronicleConnection;
|
|
55
|
+
await new Projections('store', 'namespace', connection, artifacts, 'test-sink').register();
|
|
56
|
+
const request = register.mock.calls[0][0] as { Projections: { Tags: string[] }[] };
|
|
57
|
+
request.Projections[0].Tags.should.deep.equal(['analytics', 'audit', 'reporting']);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('should keep an untagged observer empty without borrowing declarative read-model labels', () => {
|
|
61
|
+
createArtifacts(modelBound).compile().Tags.should.deep.equal([]);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('should hash the same tag set identically regardless of declaration order and duplicates', () => {
|
|
65
|
+
const first = createArtifacts(modelBound, ['reporting', 'analytics']);
|
|
66
|
+
tags('reporting')(first.observer);
|
|
67
|
+
const second = createArtifacts(modelBound, ['analytics', 'reporting', 'analytics']);
|
|
68
|
+
first.compile().LastUpdated!.Value.should.equal(second.compile().LastUpdated!.Value);
|
|
69
|
+
first.compile().LastUpdated!.Value.should.equal(first.compile().LastUpdated!.Value);
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
it('should include tag changes in the definition hash without reordering metadata', () => {
|
|
73
|
+
const { compile, observer } = createArtifacts(modelBound, ['reporting', 'analytics']);
|
|
74
|
+
const previous = compile().LastUpdated!.Value;
|
|
75
|
+
getTagsFor(observer).map(value => value.value).should.deep.equal(['reporting', 'analytics']);
|
|
76
|
+
tag('audit')(observer);
|
|
77
|
+
compile().LastUpdated!.Value.should.not.equal(previous);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should not filter untagged events in the in-process read-model scenario', async () => {
|
|
81
|
+
const { Model, artifacts } = createArtifacts(modelBound, ['analytics']);
|
|
82
|
+
const scenario = new ReadModelScenario(Model, artifacts);
|
|
83
|
+
scenario.given.forEventSource('source').events(new Renamed());
|
|
84
|
+
(await scenario.instance)!.name.should.equal('updated');
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
|
|
4
|
+
import { field } from '@cratis/fundamentals';
|
|
5
|
+
import { chai, describe, it, vi } from 'vitest';
|
|
6
|
+
import type { IClientArtifactsProvider } from '../../../artifacts/index.js';
|
|
7
|
+
import type { ChronicleConnection } from '../../../connection/index.js';
|
|
8
|
+
import { eventType } from '../../../events/eventTypeDecorator.js';
|
|
9
|
+
import { getTagsFor, tag, tags } from '../../../events/tagDecorator.js';
|
|
10
|
+
import { ReadModelScenario } from '../../../testing/ReadModelScenario.js';
|
|
11
|
+
import type { IProjectionBuilderFor } from '../../declarative/IProjectionBuilderFor.js';
|
|
12
|
+
import { projection } from '../../declarative/projection.js';
|
|
13
|
+
import { fromEvent } from '../../modelBound/fromEvent.js';
|
|
14
|
+
import { ProjectionDefinitionCompiler } from '../../ProjectionDefinitionCompiler.js';
|
|
15
|
+
import { Projections } from '../../Projections.js';
|
|
16
|
+
|
|
17
|
+
chai.should();
|
|
18
|
+
|
|
19
|
+
@eventType('standard-projection-tags-renamed')
|
|
20
|
+
class Renamed {
|
|
21
|
+
@field(String) name = 'updated';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@tag('read-model-only')
|
|
25
|
+
class DeclarativeModel {
|
|
26
|
+
@field(String) id = '';
|
|
27
|
+
@field(String) name = '';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@projection('standard-projection-tags-projection', DeclarativeModel)
|
|
31
|
+
@tag('analytics', 'reporting')
|
|
32
|
+
@tags('reporting', 'audit')
|
|
33
|
+
class ModelProjection {
|
|
34
|
+
define(builder: IProjectionBuilderFor<DeclarativeModel>): void {
|
|
35
|
+
builder.from(Renamed);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@fromEvent(Renamed)
|
|
40
|
+
@tags('analytics', 'reporting')
|
|
41
|
+
@tag('reporting', 'audit')
|
|
42
|
+
class ModelBound {
|
|
43
|
+
@field(String) id = '';
|
|
44
|
+
@field(String) name = '';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
for (const modelBound of [false, true]) {
|
|
48
|
+
describe(`when compiling tags on a standard ${modelBound ? 'model-bound read model' : 'declarative projection class'}`, () => {
|
|
49
|
+
const model = modelBound ? ModelBound : DeclarativeModel;
|
|
50
|
+
const observer = modelBound ? ModelBound : ModelProjection;
|
|
51
|
+
const artifacts: IClientArtifactsProvider = {
|
|
52
|
+
eventTypes: [Renamed], readModels: [model], projections: modelBound ? [] : [ModelProjection],
|
|
53
|
+
reactors: [], reducers: [], globalForHandlers: [], seeders: [], constraints: [], webhooks: [], eventTypeMigrations: []
|
|
54
|
+
};
|
|
55
|
+
const compile = () => new ProjectionDefinitionCompiler(artifacts, 'test-sink')
|
|
56
|
+
.compile(artifacts.projections, modelBound ? [ModelBound] : []).definitions[0];
|
|
57
|
+
|
|
58
|
+
it('should register sorted distinct tags using both class decorator spellings', async () => {
|
|
59
|
+
const register = vi.fn().mockResolvedValue({});
|
|
60
|
+
const connection = { projections: { register }, readModels: { registerMany: vi.fn().mockResolvedValue({}) } } as unknown as ChronicleConnection;
|
|
61
|
+
await new Projections('store', 'namespace', connection, artifacts, 'test-sink').register();
|
|
62
|
+
const request = register.mock.calls[0][0] as { Projections: { Tags: string[] }[] };
|
|
63
|
+
request.Projections[0].Tags.should.deep.equal(['analytics', 'audit', 'reporting']);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should retain a deterministic hash and leave decorator metadata untouched', () => {
|
|
67
|
+
compile().LastUpdated!.Value.should.equal(compile().LastUpdated!.Value);
|
|
68
|
+
getTagsFor(observer).map(value => value.value).should.deep.equal(['reporting', 'audit', 'analytics']);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('should still evaluate untagged events through the shared compiler', async () => {
|
|
72
|
+
const scenario = new ReadModelScenario(model, artifacts);
|
|
73
|
+
scenario.given.forEventSource('source').events(new Renamed());
|
|
74
|
+
(await scenario.instance)!.name.should.equal('updated');
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
package/reactors/for_Reactors/against_a_kernel/when_replaying_once_only_reactors.integration.spec.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import { randomUUID } from 'node:crypto';
|
|
5
5
|
import { afterAll, beforeAll, chai, describe, it } from 'vitest';
|
|
6
|
+
import { ObserverRunningState } from '@cratis/chronicle.contracts';
|
|
6
7
|
import { field } from '@cratis/fundamentals';
|
|
7
8
|
import { ChronicleClient } from '../../../ChronicleClient.js';
|
|
8
9
|
import { ChronicleOptions } from '../../../ChronicleOptions.js';
|
|
@@ -52,9 +53,9 @@ const artifacts: IClientArtifactsProvider = {
|
|
|
52
53
|
globalForHandlers: []
|
|
53
54
|
};
|
|
54
55
|
|
|
55
|
-
async function eventually(accept: () => boolean
|
|
56
|
+
async function eventually(accept: () => boolean | Promise<boolean>, timeoutMs = 30_000): Promise<void> {
|
|
56
57
|
const deadline = Date.now() + timeoutMs;
|
|
57
|
-
while (!accept()) {
|
|
58
|
+
while (!await accept()) {
|
|
58
59
|
if (Date.now() > deadline) throw new Error('Timed out waiting for the kernel');
|
|
59
60
|
await new Promise(resolve => setTimeout(resolve, 250));
|
|
60
61
|
}
|
|
@@ -77,6 +78,18 @@ describe.skipIf(!connectionString && !process.env.CI)('when replaying reactors a
|
|
|
77
78
|
EventSequenceId: 'event-log'
|
|
78
79
|
});
|
|
79
80
|
|
|
81
|
+
const waitForActiveObservers = (lastHandledSequenceNumber?: bigint) => eventually(async () => {
|
|
82
|
+
const observers = await Promise.all(['OnceOnlyReactor', 'ReplayableReactor'].map(observerId =>
|
|
83
|
+
connection.observers.getObserverInformation({
|
|
84
|
+
EventStore: storeName,
|
|
85
|
+
Namespace: 'Default',
|
|
86
|
+
ObserverId: observerId,
|
|
87
|
+
EventSequenceId: 'event-log'
|
|
88
|
+
})));
|
|
89
|
+
return observers.every(observer => observer.IsSubscribed && observer.RunningState === ObserverRunningState.Active &&
|
|
90
|
+
(lastHandledSequenceNumber === undefined || observer.LastHandledEventSequenceNumber === lastHandledSequenceNumber));
|
|
91
|
+
}, 15_000);
|
|
92
|
+
|
|
80
93
|
beforeAll(async () => {
|
|
81
94
|
client = new ChronicleClient(ChronicleOptions.fromConnectionString(connectionString!, {
|
|
82
95
|
discoveryPatterns: [],
|
|
@@ -85,8 +98,14 @@ describe.skipIf(!connectionString && !process.env.CI)('when replaying reactors a
|
|
|
85
98
|
store = await client.getEventStore(storeName);
|
|
86
99
|
connection = (store as unknown as { _connection: ChronicleConnection })._connection;
|
|
87
100
|
|
|
88
|
-
|
|
101
|
+
// Registration starts observation in the background. Append only after both subscriptions
|
|
102
|
+
// are active, so initial catch-up cannot race the explicit replay's state transition.
|
|
103
|
+
await waitForActiveObservers();
|
|
104
|
+
const appended = await store.eventLog.append(randomUUID(), Object.assign(new ThingHappened(), { name: 'first' }));
|
|
105
|
+
appended.isSuccess.should.be.true;
|
|
89
106
|
await eventually(() => onceOnlyInvocations.length === 1 && replayableInvocations.length === 1);
|
|
107
|
+
// The handlers update their sinks before the kernel acknowledges delivery and records progress.
|
|
108
|
+
await waitForActiveObservers(appended.sequenceNumber.value);
|
|
90
109
|
|
|
91
110
|
onceOnlyJobId = (await replay('OnceOnlyReactor')).JobId;
|
|
92
111
|
replayableJobId = (await replay('ReplayableReactor')).JobId;
|