@cratis/chronicle 6.14.1 → 6.14.2

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.
Files changed (33) hide show
  1. package/dist/projections/CompiledProjectionDefinitions.d.ts +10 -0
  2. package/dist/projections/CompiledProjectionDefinitions.d.ts.map +1 -0
  3. package/dist/projections/CompiledProjectionDefinitions.js +4 -0
  4. package/dist/projections/CompiledProjectionDefinitions.js.map +1 -0
  5. package/dist/projections/ProjectionDefinitionCompiler.d.ts +35 -0
  6. package/dist/projections/ProjectionDefinitionCompiler.d.ts.map +1 -0
  7. package/dist/projections/ProjectionDefinitionCompiler.js +355 -0
  8. package/dist/projections/ProjectionDefinitionCompiler.js.map +1 -0
  9. package/dist/projections/Projections.d.ts +0 -21
  10. package/dist/projections/Projections.d.ts.map +1 -1
  11. package/dist/projections/Projections.js +9 -339
  12. package/dist/projections/Projections.js.map +1 -1
  13. package/dist/projections/ResolvedModelBoundMetadata.d.ts +8 -0
  14. package/dist/projections/ResolvedModelBoundMetadata.d.ts.map +1 -0
  15. package/dist/projections/ResolvedModelBoundMetadata.js +4 -0
  16. package/dist/projections/ResolvedModelBoundMetadata.js.map +1 -0
  17. package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts.map +1 -1
  18. package/dist/projections/modelBound/childrenAndNestedBuilder.js +7 -3
  19. package/dist/projections/modelBound/childrenAndNestedBuilder.js.map +1 -1
  20. package/dist/projections/modelBound/isModelBoundProjection.d.ts +3 -0
  21. package/dist/projections/modelBound/isModelBoundProjection.d.ts.map +1 -0
  22. package/dist/projections/modelBound/isModelBoundProjection.js +9 -0
  23. package/dist/projections/modelBound/isModelBoundProjection.js.map +1 -0
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +1 -1
  26. package/projections/CompiledProjectionDefinitions.ts +13 -0
  27. package/projections/ProjectionDefinitionCompiler.registration.spec.ts +279 -0
  28. package/projections/ProjectionDefinitionCompiler.ts +386 -0
  29. package/projections/Projections.childrenAndNested.spec.ts +47 -2
  30. package/projections/Projections.ts +14 -413
  31. package/projections/ResolvedModelBoundMetadata.ts +11 -0
  32. package/projections/modelBound/childrenAndNestedBuilder.ts +7 -3
  33. package/projections/modelBound/isModelBoundProjection.ts +10 -0
@@ -0,0 +1,10 @@
1
+ import type { ProjectionDefinition } from '@cratis/chronicle.contracts';
2
+ import type { buildReadModelDefinition } from '../readModels/buildReadModelDefinition.js';
3
+ /** Connection-independent contracts produced for projection registration. */
4
+ export interface CompiledProjectionDefinitions {
5
+ /** The final wire definitions, including variant cross-wiring and LastUpdated hashes. */
6
+ readonly definitions: ProjectionDefinition[];
7
+ /** Read models registered before the projections. */
8
+ readonly readModels: ReturnType<typeof buildReadModelDefinition>[];
9
+ }
10
+ //# sourceMappingURL=CompiledProjectionDefinitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompiledProjectionDefinitions.d.ts","sourceRoot":"","sources":["../../projections/CompiledProjectionDefinitions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AAE1F,6EAA6E;AAC7E,MAAM,WAAW,6BAA6B;IAC1C,yFAAyF;IACzF,QAAQ,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAC7C,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,wBAAwB,CAAC,EAAE,CAAC;CACtE"}
@@ -0,0 +1,4 @@
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
+ export {};
4
+ //# sourceMappingURL=CompiledProjectionDefinitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompiledProjectionDefinitions.js","sourceRoot":"","sources":["../../projections/CompiledProjectionDefinitions.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
@@ -0,0 +1,35 @@
1
+ import { Constructor } from '@cratis/fundamentals';
2
+ import { IClientArtifactsProvider } from '../artifacts/index.js';
3
+ import { CompiledProjectionDefinitions } from './CompiledProjectionDefinitions.js';
4
+ /** Compiles discovered projection types into the contracts sent to the kernel, without a connection. */
5
+ export declare class ProjectionDefinitionCompiler {
6
+ private readonly _clientArtifacts;
7
+ private readonly _defaultSinkTypeId;
8
+ /**
9
+ * @param _clientArtifacts - Discovered artifact types used to resolve schemas, variants, and read models.
10
+ * @param _defaultSinkTypeId - Sink identifier for active read models.
11
+ */
12
+ constructor(_clientArtifacts: IClientArtifactsProvider, _defaultSinkTypeId: string);
13
+ /**
14
+ * Builds all definitions together so variant cross-wiring precedes the final hash.
15
+ * @param declarative - Discovered declarative projection types.
16
+ * @param modelBound - Discovered model-bound read model types.
17
+ * @returns Projection definitions and read-model registrations ready for the wire.
18
+ */
19
+ compile(declarative: Iterable<Constructor>, modelBound: Iterable<Constructor>): CompiledProjectionDefinitions;
20
+ private buildReadModelDefinitions;
21
+ private getReadModelType;
22
+ private buildDeclarativeDefinition;
23
+ private inferReadModelIdentifier;
24
+ private buildModelBoundDefinition;
25
+ /**
26
+ * Builds event mappings for a global variant handler without creating a separate projection.
27
+ * @param type - The global handler type containing from-event and property mappings.
28
+ * @returns The event mappings to merge into each matching variant.
29
+ */
30
+ private buildFromRecordsForType;
31
+ private ensureJoinEntry;
32
+ /** Hash the final wire definition, excluding LastUpdated itself, to avoid unnecessary replays. */
33
+ private computeStableLastUpdated;
34
+ }
35
+ //# sourceMappingURL=ProjectionDefinitionCompiler.d.ts.map
@@ -0,0 +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;AASjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AA6BnF,wGAAwG;AACxG,qBAAa,4BAA4B;IAMjC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IANvC;;;OAGG;IACH,YACqB,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,MAAM,EAC3C;IAEJ;;;;;OAKG;IACH,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,6BAA6B,CAoB5G;IAED,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,0BAA0B;IAoClC,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,yBAAyB;IA0JjC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,eAAe;IAevB,kGAAkG;IAClG,OAAO,CAAC,wBAAwB;CASnC"}
@@ -0,0 +1,355 @@
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 { AutoMap, ReadModelObserverType } from '@cratis/chronicle.contracts';
4
+ import { EventSequenceId } from '../eventSequences/EventSequenceId.js';
5
+ import { getReadModelMetadata } from '../readModels/index.js';
6
+ import { getReadModelId } from '../readModels/readModel.js';
7
+ import { buildReadModelDefinition } from '../readModels/buildReadModelDefinition.js';
8
+ import { rootReadModelTypes } from '../readModels/rootReadModelTypes.js';
9
+ import { JsonSchemaGenerator } from '../schemas/index.js';
10
+ import { WellKnownSinks } from '../sinks/index.js';
11
+ import { TypeIntrospector } from '../types/index.js';
12
+ import { constantValueExpression } from './constantValueExpression.js';
13
+ import { getProjectionMetadata } from './declarative/projection.js';
14
+ import { ProjectionBuilderFor } from './declarative/ProjectionBuilderFor.js';
15
+ import { applyPropertyMappings, buildChildrenEntry, buildNestedEntry, ensureFromEntry, getEventTypeMapKey, toContractEventType } from './modelBound/childrenAndNestedBuilder.js';
16
+ import { getChildrenFromMetadata } from './modelBound/childrenFrom.js';
17
+ import { getClearWithPropertyMetadata } from './modelBound/clearWith.js';
18
+ import { getEventSequenceMetadata } from './modelBound/eventSequence.js';
19
+ import { getFromAllMetadata } from './modelBound/fromAll.js';
20
+ import { getFromEveryMetadata } from './modelBound/fromEvery.js';
21
+ import { getFromEventMetadata } from './modelBound/fromEvent.js';
22
+ import { isModelBoundProjection } from './modelBound/isModelBoundProjection.js';
23
+ import { getJoinMetadata } from './modelBound/join.js';
24
+ import { isNoAutoMap, isPropertyNoAutoMap } from './modelBound/noAutoMap.js';
25
+ import { isNested } from './modelBound/nested.js';
26
+ import { isNotRewindable } from './modelBound/notRewindable.js';
27
+ import { isPassive } from './modelBound/passive.js';
28
+ import { getRemovedWithClassMetadata, getRemovedWithPropertyMetadata } from './modelBound/removedWith.js';
29
+ import { getRemovedWithJoinClassMetadata, getRemovedWithJoinPropertyMetadata } from './modelBound/removedWithJoin.js';
30
+ import { getVariantOfMetadata } from './modelBound/variantOf.js';
31
+ import { getEntersOnMetadata } from './modelBound/entersOn.js';
32
+ import { getGlobalForMetadata } from './modelBound/globalFor.js';
33
+ import { crossWireGroups, mergeGlobalHandlers, reclassify } from './VariantReclassifier.js';
34
+ /** Compiles discovered projection types into the contracts sent to the kernel, without a connection. */
35
+ export class ProjectionDefinitionCompiler {
36
+ _clientArtifacts;
37
+ _defaultSinkTypeId;
38
+ /**
39
+ * @param _clientArtifacts - Discovered artifact types used to resolve schemas, variants, and read models.
40
+ * @param _defaultSinkTypeId - Sink identifier for active read models.
41
+ */
42
+ constructor(_clientArtifacts, _defaultSinkTypeId) {
43
+ this._clientArtifacts = _clientArtifacts;
44
+ this._defaultSinkTypeId = _defaultSinkTypeId;
45
+ }
46
+ /**
47
+ * Builds all definitions together so variant cross-wiring precedes the final hash.
48
+ * @param declarative - Discovered declarative projection types.
49
+ * @param modelBound - Discovered model-bound read model types.
50
+ * @returns Projection definitions and read-model registrations ready for the wire.
51
+ */
52
+ compile(declarative, modelBound) {
53
+ const builtProjections = [
54
+ ...Array.from(declarative, type => this.buildDeclarativeDefinition(type)),
55
+ ...Array.from(modelBound, type => this.buildModelBoundDefinition(type))
56
+ ];
57
+ // A sibling's entering event adds RemovedWith to each variant. Hash only after
58
+ // every variant has been cross-wired, so repeated registrations remain stable.
59
+ crossWireGroups(builtProjections);
60
+ for (const built of builtProjections) {
61
+ built.definition.LastUpdated = { Value: this.computeStableLastUpdated(built.definition) };
62
+ }
63
+ // The generated contract includes fields initialized by the transport encoder. Keep the
64
+ // existing sparse wire objects: adding those default-valued fields would change the payload.
65
+ // Evaluators must tolerate absent optional contract fields (for example NoAutoMapProperties).
66
+ const definitions = builtProjections.map(built => built.definition);
67
+ return {
68
+ definitions,
69
+ readModels: this.buildReadModelDefinitions(definitions)
70
+ };
71
+ }
72
+ buildReadModelDefinitions(projections) {
73
+ const byReadModel = new Map();
74
+ for (const projection of projections) {
75
+ const readModelIdentifier = projection.ReadModel;
76
+ if (!readModelIdentifier) {
77
+ continue;
78
+ }
79
+ const existing = byReadModel.get(readModelIdentifier);
80
+ if (existing) {
81
+ if (existing.ObserverIdentifier !== projection.Identifier) {
82
+ throw new Error(`Read model id '${readModelIdentifier}' has multiple projections.`);
83
+ }
84
+ continue;
85
+ }
86
+ const readModelType = this.getReadModelType(readModelIdentifier);
87
+ byReadModel.set(readModelIdentifier, buildReadModelDefinition({
88
+ identifier: readModelIdentifier,
89
+ type: readModelType,
90
+ schema: readModelType
91
+ ? JSON.stringify(getReadModelMetadata(readModelType)?.schema ?? JsonSchemaGenerator.generate(readModelType))
92
+ : '{}',
93
+ // Passive projections never write to a materialized sink, so they register with
94
+ // the None sink. This lets the kernel fall through to immediate projection when
95
+ // resolving the instance by key instead of reading an empty sink and returning null.
96
+ sinkTypeId: projection.IsActive === false ? WellKnownSinks.None : this._defaultSinkTypeId,
97
+ observerType: ReadModelObserverType.Projection,
98
+ observerIdentifier: projection.Identifier
99
+ }));
100
+ }
101
+ return Array.from(byReadModel.values());
102
+ }
103
+ getReadModelType(readModelIdentifier) {
104
+ const types = [
105
+ ...rootReadModelTypes(this._clientArtifacts),
106
+ ...this._clientArtifacts.projections
107
+ .map(projectionType => getProjectionMetadata(projectionType)?.readModelType)
108
+ .filter((type) => type !== undefined)
109
+ ];
110
+ for (const type of types) {
111
+ if (getReadModelId(type) === readModelIdentifier)
112
+ return type;
113
+ }
114
+ return undefined;
115
+ }
116
+ buildDeclarativeDefinition(type) {
117
+ const metadata = getProjectionMetadata(type);
118
+ if (!metadata) {
119
+ throw new Error(`Type '${type.name}' is missing declarative projection metadata.`);
120
+ }
121
+ const builder = new ProjectionBuilderFor();
122
+ const instance = new type();
123
+ instance.define(builder);
124
+ const definition = builder.build(metadata.id.value, type.name);
125
+ const explicitReadModelIdentifier = definition.ReadModel;
126
+ if (explicitReadModelIdentifier === type.name) {
127
+ if (metadata.readModelType) {
128
+ definition.ReadModel = getReadModelId(metadata.readModelType);
129
+ }
130
+ else {
131
+ const inferredReadModelIdentifier = this.inferReadModelIdentifier(builder.getMappedReadModelProperties());
132
+ if (inferredReadModelIdentifier) {
133
+ definition.ReadModel = inferredReadModelIdentifier;
134
+ }
135
+ }
136
+ }
137
+ let variant;
138
+ const variantDeclaration = builder.getVariantDeclaration();
139
+ if (variantDeclaration) {
140
+ const reclassified = reclassify(type.name, definition.From, definition.Join, variantDeclaration.enteringEventTypes, variantDeclaration.key);
141
+ definition.From = reclassified.from;
142
+ definition.Join = reclassified.join;
143
+ variant = variantDeclaration;
144
+ }
145
+ return { typeName: type.name, definition, variant };
146
+ }
147
+ inferReadModelIdentifier(mappedProperties) {
148
+ if (mappedProperties.length === 0) {
149
+ return undefined;
150
+ }
151
+ const matchingReadModels = rootReadModelTypes(this._clientArtifacts)
152
+ .map(type => ({ type, metadata: getReadModelMetadata(type) }))
153
+ .filter(candidate => candidate.metadata)
154
+ .filter(candidate => {
155
+ const readModelProperties = Array.from(candidate.metadata.members.keys());
156
+ return mappedProperties.every(property => readModelProperties.includes(property));
157
+ });
158
+ if (matchingReadModels.length !== 1) {
159
+ return undefined;
160
+ }
161
+ return matchingReadModels[0].metadata.id.value;
162
+ }
163
+ buildModelBoundDefinition(type) {
164
+ if (!isModelBoundProjection(type)) {
165
+ throw new Error(`Type '${type.name}' is missing model-bound projection metadata.`);
166
+ }
167
+ const readModelIdentifier = getReadModelId(type);
168
+ const eventSequenceId = getEventSequenceMetadata(type);
169
+ const properties = TypeIntrospector.getTrackedProperties(type);
170
+ const prototype = type.prototype;
171
+ const fromByEventType = new Map();
172
+ const joinByEventType = new Map();
173
+ const removedWithByEventType = new Map();
174
+ const removedWithJoinByEventType = new Map();
175
+ const childrenByProperty = {};
176
+ const nestedByProperty = {};
177
+ const fromEvents = getFromEventMetadata(type);
178
+ for (const fromEvent of fromEvents) {
179
+ const eventType = toContractEventType(fromEvent.eventType);
180
+ const eventKey = getEventTypeMapKey(eventType);
181
+ fromByEventType.set(eventKey, {
182
+ Key: eventType,
183
+ Value: {
184
+ Properties: {},
185
+ Key: fromEvent.constantKey ? constantValueExpression(fromEvent.constantKey) : (fromEvent.key ?? '$eventSourceId'),
186
+ ParentKey: fromEvent.parentKey ?? ''
187
+ }
188
+ });
189
+ }
190
+ const removedWithClass = getRemovedWithClassMetadata(type);
191
+ for (const removed of removedWithClass) {
192
+ const eventType = toContractEventType(removed.eventType);
193
+ removedWithByEventType.set(getEventTypeMapKey(eventType), {
194
+ Key: eventType,
195
+ Value: { Key: removed.key ?? '$eventSourceId', ParentKey: removed.parentKey ?? '' }
196
+ });
197
+ }
198
+ const removedWithJoinClass = getRemovedWithJoinClassMetadata(type);
199
+ for (const removed of removedWithJoinClass) {
200
+ const eventType = toContractEventType(removed.eventType);
201
+ removedWithJoinByEventType.set(getEventTypeMapKey(eventType), {
202
+ Key: eventType,
203
+ Value: { Key: removed.key ?? '$eventSourceId' }
204
+ });
205
+ }
206
+ for (const property of properties) {
207
+ applyPropertyMappings(prototype, property, fromByEventType);
208
+ for (const mapping of getJoinMetadata(prototype, property)) {
209
+ const entry = this.ensureJoinEntry(joinByEventType, mapping.eventType);
210
+ entry.Value.On = mapping.on ?? (entry.Value.On || property);
211
+ entry.Value.Properties[property] = mapping.eventPropertyName ?? property;
212
+ }
213
+ for (const removed of getRemovedWithPropertyMetadata(prototype, property)) {
214
+ const eventType = toContractEventType(removed.eventType);
215
+ removedWithByEventType.set(getEventTypeMapKey(eventType), {
216
+ Key: eventType,
217
+ Value: { Key: removed.key ?? '$eventSourceId', ParentKey: removed.parentKey ?? '' }
218
+ });
219
+ }
220
+ for (const removed of getRemovedWithJoinPropertyMetadata(prototype, property)) {
221
+ const eventType = toContractEventType(removed.eventType);
222
+ removedWithJoinByEventType.set(getEventTypeMapKey(eventType), {
223
+ Key: eventType,
224
+ Value: { Key: removed.key ?? '$eventSourceId' }
225
+ });
226
+ }
227
+ const childrenFromList = getChildrenFromMetadata(prototype, property);
228
+ if (childrenFromList.length > 0) {
229
+ childrenByProperty[property] = buildChildrenEntry(type, property, childrenFromList);
230
+ }
231
+ const propertyIsNested = isNested(prototype, property);
232
+ if (propertyIsNested) {
233
+ nestedByProperty[property] = buildNestedEntry(type, property);
234
+ }
235
+ // A scalar root property clears back to no value when the given event is observed.
236
+ // Nested single-object clearWith is handled by buildNestedEntry instead.
237
+ if (childrenFromList.length === 0 && !propertyIsNested) {
238
+ for (const clearWith of getClearWithPropertyMetadata(prototype, property)) {
239
+ const entry = ensureFromEntry(fromByEventType, clearWith.eventType);
240
+ entry.Value.Properties[property] = '$null';
241
+ }
242
+ }
243
+ }
244
+ const allProperties = {};
245
+ for (const property of properties) {
246
+ const fromEvery = getFromEveryMetadata(prototype, property) ?? getFromAllMetadata(prototype, property);
247
+ if (fromEvery) {
248
+ allProperties[property] = fromEvery.contextProperty
249
+ ? fromEvery.contextProperty
250
+ : (fromEvery.property ?? property);
251
+ }
252
+ }
253
+ let from = Array.from(fromByEventType.values());
254
+ let join = Array.from(joinByEventType.values());
255
+ let variant;
256
+ const variantMetadata = getVariantOfMetadata(type);
257
+ if (variantMetadata) {
258
+ const entersOnList = getEntersOnMetadata(type);
259
+ const enteringEventTypes = entersOnList.map(entersOn => {
260
+ const contractType = toContractEventType(entersOn.eventType);
261
+ if (entersOn.key) {
262
+ const entry = ensureFromEntry(fromByEventType, entersOn.eventType);
263
+ entry.Value.Key = entersOn.key;
264
+ }
265
+ return contractType;
266
+ });
267
+ from = Array.from(fromByEventType.values());
268
+ const globalHandlers = new Map();
269
+ for (const handlerType of this._clientArtifacts.globalForHandlers) {
270
+ const globalForMetadata = getGlobalForMetadata(handlerType);
271
+ if (globalForMetadata?.identity === variantMetadata.identity) {
272
+ globalHandlers.set(handlerType.name, this.buildFromRecordsForType(handlerType));
273
+ }
274
+ }
275
+ const memberNames = new Set(getReadModelMetadata(type)?.members.keys() ?? TypeIntrospector.getMembers(type).keys());
276
+ const merged = mergeGlobalHandlers(type.name, memberNames, from, globalHandlers);
277
+ const reclassified = reclassify(type.name, merged, join, enteringEventTypes, variantMetadata.key);
278
+ from = reclassified.from;
279
+ join = reclassified.join;
280
+ variant = { identity: variantMetadata.identity, key: variantMetadata.key, enteringEventTypes };
281
+ }
282
+ const definition = {
283
+ EventSequenceId: eventSequenceId ?? EventSequenceId.eventLog.value,
284
+ Identifier: readModelIdentifier,
285
+ ReadModel: readModelIdentifier,
286
+ IsActive: !isPassive(type),
287
+ IsRewindable: !isNotRewindable(type),
288
+ InitialModelState: '{}',
289
+ From: from,
290
+ Join: join,
291
+ Children: childrenByProperty,
292
+ FromEvery: [],
293
+ All: {
294
+ Properties: allProperties,
295
+ IncludeChildren: false,
296
+ AutoMap: AutoMap.Inherit
297
+ },
298
+ RemovedWith: Array.from(removedWithByEventType.values()),
299
+ RemovedWithJoin: Array.from(removedWithJoinByEventType.values()),
300
+ LastUpdated: { Value: '' },
301
+ Tags: [],
302
+ AutoMap: isNoAutoMap(type) ? AutoMap.Disabled : AutoMap.Enabled,
303
+ NoAutoMapProperties: properties.filter(property => isPropertyNoAutoMap(prototype, property)),
304
+ Nested: nestedByProperty
305
+ };
306
+ return { typeName: type.name, definition, variant };
307
+ }
308
+ /**
309
+ * Builds event mappings for a global variant handler without creating a separate projection.
310
+ * @param type - The global handler type containing from-event and property mappings.
311
+ * @returns The event mappings to merge into each matching variant.
312
+ */
313
+ buildFromRecordsForType(type) {
314
+ const fromByEventType = new Map();
315
+ const fromEvents = getFromEventMetadata(type);
316
+ for (const fromEvent of fromEvents) {
317
+ const eventType = toContractEventType(fromEvent.eventType);
318
+ fromByEventType.set(getEventTypeMapKey(eventType), {
319
+ Key: eventType,
320
+ Value: {
321
+ Properties: {},
322
+ Key: fromEvent.constantKey ? constantValueExpression(fromEvent.constantKey) : (fromEvent.key ?? '$eventSourceId'),
323
+ ParentKey: fromEvent.parentKey ?? ''
324
+ }
325
+ });
326
+ }
327
+ const prototype = type.prototype;
328
+ for (const property of TypeIntrospector.getTrackedProperties(type)) {
329
+ applyPropertyMappings(prototype, property, fromByEventType);
330
+ }
331
+ return Array.from(fromByEventType.values());
332
+ }
333
+ ensureJoinEntry(joinByEventType, eventTypeConstructor) {
334
+ const eventType = toContractEventType(eventTypeConstructor);
335
+ const key = getEventTypeMapKey(eventType);
336
+ const existing = joinByEventType.get(key);
337
+ if (existing) {
338
+ return existing;
339
+ }
340
+ const created = { Key: eventType, Value: { On: '', Properties: {}, Key: '$eventSourceId' } };
341
+ joinByEventType.set(key, created);
342
+ return created;
343
+ }
344
+ /** Hash the final wire definition, excluding LastUpdated itself, to avoid unnecessary replays. */
345
+ computeStableLastUpdated(definition) {
346
+ const { LastUpdated: _omit, ...rest } = definition;
347
+ const content = JSON.stringify(rest, Object.keys(rest).sort());
348
+ let hash = 5381;
349
+ for (let i = 0; i < content.length; i++) {
350
+ hash = ((hash << 5) + hash + content.charCodeAt(i)) >>> 0;
351
+ }
352
+ return new Date(hash * 1000).toISOString();
353
+ }
354
+ }
355
+ //# sourceMappingURL=ProjectionDefinitionCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectionDefinitionCompiler.js","sourceRoot":"","sources":["../../projections/ProjectionDefinitionCompiler.ts"],"names":[],"mappings":"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"}
@@ -68,27 +68,6 @@ export declare class Projections implements IProjections {
68
68
  */
69
69
  private resolveEventSequenceIdFor;
70
70
  private registerWithRetry;
71
- private buildReadModelDefinitions;
72
- private getReadModelType;
73
- private buildDeclarativeDefinition;
74
- private inferReadModelIdentifier;
75
- private buildModelBoundDefinition;
76
- /**
77
- * Builds the raw From records for an arbitrary type using the same property-mapping rules as
78
- * a model-bound read model - used to fold a globalFor shared handler's mappings into every
79
- * variant of its identity.
80
- * @param type - The type to build From records for.
81
- * @returns The built From records.
82
- */
83
- private buildFromRecordsForType;
84
71
  private resolveModelBoundMetadata;
85
- private ensureJoinEntry;
86
- /**
87
- * Computes a stable, deterministic ISO timestamp from the projection definition content,
88
- * excluding the LastUpdated field itself. This ensures the server does not interpret
89
- * a repeated registration of an unchanged definition as a definition change, which
90
- * would otherwise trigger an unnecessary auto-replay.
91
- */
92
- private computeStableLastUpdated;
93
72
  }
94
73
  //# sourceMappingURL=Projections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Projections.d.ts","sourceRoot":"","sources":["../../projections/Projections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Projections.d.ts","sourceRoot":"","sources":["../../projections/Projections.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAQ,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAMpE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAKvD;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAgBxC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAnBvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8E;IAEtG;;;;;;;OAOG;IACH,YACqB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,wBAAwB,EAC1C,kBAAkB,EAAE,MAAM,EAG9C;IAED,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAkC9B;IAED,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAkC9B;IAED,kBAAkB;IAClB,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAGnD;IAED,kBAAkB;IAClB,WAAW,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAO/C;IAED,kBAAkB;IAClB,kBAAkB,CAAC,aAAa,EAAE,WAAW,GAAG,YAAY,CAE3D;IAED,kBAAkB;IACZ,WAAW,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB/E;IAED,kBAAkB;IAClB,gBAAgB,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC,CAErE;IAED,kBAAkB;IAClB,2BAA2B,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAGlF;IAED,kBAAkB;IACZ,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAchE;IAED,kBAAkB;IAClB,cAAc,CAAC,aAAa,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAEzD;IAED,kBAAkB;IACZ,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,eAAe,GAAE,MAAuC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAezH;IAED,OAAO,CAAC,mBAAmB;IAI3B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAmBnC;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;YAcnB,iBAAiB;IA8B/B,OAAO,CAAC,yBAAyB;CAYpC"}