@cratis/chronicle 6.14.1 → 6.14.3

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 (45) 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 +356 -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/canonicalStringify.d.ts +3 -0
  18. package/dist/projections/canonicalStringify.d.ts.map +1 -0
  19. package/dist/projections/canonicalStringify.js +12 -0
  20. package/dist/projections/canonicalStringify.js.map +1 -0
  21. package/dist/projections/declarative/ProjectionBuilderFor.d.ts +1 -2
  22. package/dist/projections/declarative/ProjectionBuilderFor.d.ts.map +1 -1
  23. package/dist/projections/declarative/ProjectionBuilderFor.js +3 -3
  24. package/dist/projections/declarative/ProjectionBuilderFor.js.map +1 -1
  25. package/dist/projections/modelBound/childrenAndNestedBuilder.d.ts.map +1 -1
  26. package/dist/projections/modelBound/childrenAndNestedBuilder.js +7 -3
  27. package/dist/projections/modelBound/childrenAndNestedBuilder.js.map +1 -1
  28. package/dist/projections/modelBound/isModelBoundProjection.d.ts +3 -0
  29. package/dist/projections/modelBound/isModelBoundProjection.d.ts.map +1 -0
  30. package/dist/projections/modelBound/isModelBoundProjection.js +9 -0
  31. package/dist/projections/modelBound/isModelBoundProjection.js.map +1 -0
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +1 -1
  34. package/projections/CompiledProjectionDefinitions.ts +13 -0
  35. package/projections/ProjectionDefinitionCompiler.registration.spec.ts +294 -0
  36. package/projections/ProjectionDefinitionCompiler.ts +387 -0
  37. package/projections/Projections.childrenAndNested.spec.ts +47 -2
  38. package/projections/Projections.ts +14 -413
  39. package/projections/ResolvedModelBoundMetadata.ts +11 -0
  40. package/projections/canonicalStringify.spec.ts +29 -0
  41. package/projections/canonicalStringify.ts +12 -0
  42. package/projections/declarative/ProjectionBuilderFor.spec.ts +50 -0
  43. package/projections/declarative/ProjectionBuilderFor.ts +3 -3
  44. package/projections/modelBound/childrenAndNestedBuilder.ts +7 -3
  45. 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, for stable metadata. */
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;AAUjE,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,yFAAyF;IACzF,OAAO,CAAC,wBAAwB;CASnC"}
@@ -0,0 +1,356 @@
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 { canonicalStringify } from './canonicalStringify.js';
13
+ import { constantValueExpression } from './constantValueExpression.js';
14
+ import { getProjectionMetadata } from './declarative/projection.js';
15
+ import { ProjectionBuilderFor } from './declarative/ProjectionBuilderFor.js';
16
+ import { applyPropertyMappings, buildChildrenEntry, buildNestedEntry, ensureFromEntry, getEventTypeMapKey, toContractEventType } from './modelBound/childrenAndNestedBuilder.js';
17
+ import { getChildrenFromMetadata } from './modelBound/childrenFrom.js';
18
+ import { getClearWithPropertyMetadata } from './modelBound/clearWith.js';
19
+ import { getEventSequenceMetadata } from './modelBound/eventSequence.js';
20
+ import { getFromAllMetadata } from './modelBound/fromAll.js';
21
+ import { getFromEveryMetadata } from './modelBound/fromEvery.js';
22
+ import { getFromEventMetadata } from './modelBound/fromEvent.js';
23
+ import { isModelBoundProjection } from './modelBound/isModelBoundProjection.js';
24
+ import { getJoinMetadata } from './modelBound/join.js';
25
+ import { isNoAutoMap, isPropertyNoAutoMap } from './modelBound/noAutoMap.js';
26
+ import { isNested } from './modelBound/nested.js';
27
+ import { isNotRewindable } from './modelBound/notRewindable.js';
28
+ import { isPassive } from './modelBound/passive.js';
29
+ import { getRemovedWithClassMetadata, getRemovedWithPropertyMetadata } from './modelBound/removedWith.js';
30
+ import { getRemovedWithJoinClassMetadata, getRemovedWithJoinPropertyMetadata } from './modelBound/removedWithJoin.js';
31
+ import { getVariantOfMetadata } from './modelBound/variantOf.js';
32
+ import { getEntersOnMetadata } from './modelBound/entersOn.js';
33
+ import { getGlobalForMetadata } from './modelBound/globalFor.js';
34
+ import { crossWireGroups, mergeGlobalHandlers, reclassify } from './VariantReclassifier.js';
35
+ /** Compiles discovered projection types into the contracts sent to the kernel, without a connection. */
36
+ export class ProjectionDefinitionCompiler {
37
+ _clientArtifacts;
38
+ _defaultSinkTypeId;
39
+ /**
40
+ * @param _clientArtifacts - Discovered artifact types used to resolve schemas, variants, and read models.
41
+ * @param _defaultSinkTypeId - Sink identifier for active read models.
42
+ */
43
+ constructor(_clientArtifacts, _defaultSinkTypeId) {
44
+ this._clientArtifacts = _clientArtifacts;
45
+ this._defaultSinkTypeId = _defaultSinkTypeId;
46
+ }
47
+ /**
48
+ * Builds all definitions together so variant cross-wiring precedes the final hash.
49
+ * @param declarative - Discovered declarative projection types.
50
+ * @param modelBound - Discovered model-bound read model types.
51
+ * @returns Projection definitions and read-model registrations ready for the wire.
52
+ */
53
+ compile(declarative, modelBound) {
54
+ const builtProjections = [
55
+ ...Array.from(declarative, type => this.buildDeclarativeDefinition(type)),
56
+ ...Array.from(modelBound, type => this.buildModelBoundDefinition(type))
57
+ ];
58
+ // A sibling's entering event adds RemovedWith to each variant. Hash only after
59
+ // every variant has been cross-wired, so repeated registrations remain stable.
60
+ crossWireGroups(builtProjections);
61
+ for (const built of builtProjections) {
62
+ built.definition.LastUpdated = { Value: this.computeStableLastUpdated(built.definition) };
63
+ }
64
+ // The generated contract includes fields initialized by the transport encoder. Keep the
65
+ // existing sparse wire objects: adding those default-valued fields would change the payload.
66
+ // Evaluators must tolerate absent optional contract fields (for example NoAutoMapProperties).
67
+ const definitions = builtProjections.map(built => built.definition);
68
+ return {
69
+ definitions,
70
+ readModels: this.buildReadModelDefinitions(definitions)
71
+ };
72
+ }
73
+ buildReadModelDefinitions(projections) {
74
+ const byReadModel = new Map();
75
+ for (const projection of projections) {
76
+ const readModelIdentifier = projection.ReadModel;
77
+ if (!readModelIdentifier) {
78
+ continue;
79
+ }
80
+ const existing = byReadModel.get(readModelIdentifier);
81
+ if (existing) {
82
+ if (existing.ObserverIdentifier !== projection.Identifier) {
83
+ throw new Error(`Read model id '${readModelIdentifier}' has multiple projections.`);
84
+ }
85
+ continue;
86
+ }
87
+ const readModelType = this.getReadModelType(readModelIdentifier);
88
+ byReadModel.set(readModelIdentifier, buildReadModelDefinition({
89
+ identifier: readModelIdentifier,
90
+ type: readModelType,
91
+ schema: readModelType
92
+ ? JSON.stringify(getReadModelMetadata(readModelType)?.schema ?? JsonSchemaGenerator.generate(readModelType))
93
+ : '{}',
94
+ // Passive projections never write to a materialized sink, so they register with
95
+ // the None sink. This lets the kernel fall through to immediate projection when
96
+ // resolving the instance by key instead of reading an empty sink and returning null.
97
+ sinkTypeId: projection.IsActive === false ? WellKnownSinks.None : this._defaultSinkTypeId,
98
+ observerType: ReadModelObserverType.Projection,
99
+ observerIdentifier: projection.Identifier
100
+ }));
101
+ }
102
+ return Array.from(byReadModel.values());
103
+ }
104
+ getReadModelType(readModelIdentifier) {
105
+ const types = [
106
+ ...rootReadModelTypes(this._clientArtifacts),
107
+ ...this._clientArtifacts.projections
108
+ .map(projectionType => getProjectionMetadata(projectionType)?.readModelType)
109
+ .filter((type) => type !== undefined)
110
+ ];
111
+ for (const type of types) {
112
+ if (getReadModelId(type) === readModelIdentifier)
113
+ return type;
114
+ }
115
+ return undefined;
116
+ }
117
+ buildDeclarativeDefinition(type) {
118
+ const metadata = getProjectionMetadata(type);
119
+ if (!metadata) {
120
+ throw new Error(`Type '${type.name}' is missing declarative projection metadata.`);
121
+ }
122
+ const builder = new ProjectionBuilderFor();
123
+ const instance = new type();
124
+ instance.define(builder);
125
+ const definition = builder.build(metadata.id.value, type.name);
126
+ const explicitReadModelIdentifier = definition.ReadModel;
127
+ if (explicitReadModelIdentifier === type.name) {
128
+ if (metadata.readModelType) {
129
+ definition.ReadModel = getReadModelId(metadata.readModelType);
130
+ }
131
+ else {
132
+ const inferredReadModelIdentifier = this.inferReadModelIdentifier(builder.getMappedReadModelProperties());
133
+ if (inferredReadModelIdentifier) {
134
+ definition.ReadModel = inferredReadModelIdentifier;
135
+ }
136
+ }
137
+ }
138
+ let variant;
139
+ const variantDeclaration = builder.getVariantDeclaration();
140
+ if (variantDeclaration) {
141
+ const reclassified = reclassify(type.name, definition.From, definition.Join, variantDeclaration.enteringEventTypes, variantDeclaration.key);
142
+ definition.From = reclassified.from;
143
+ definition.Join = reclassified.join;
144
+ variant = variantDeclaration;
145
+ }
146
+ return { typeName: type.name, definition, variant };
147
+ }
148
+ inferReadModelIdentifier(mappedProperties) {
149
+ if (mappedProperties.length === 0) {
150
+ return undefined;
151
+ }
152
+ const matchingReadModels = rootReadModelTypes(this._clientArtifacts)
153
+ .map(type => ({ type, metadata: getReadModelMetadata(type) }))
154
+ .filter(candidate => candidate.metadata)
155
+ .filter(candidate => {
156
+ const readModelProperties = Array.from(candidate.metadata.members.keys());
157
+ return mappedProperties.every(property => readModelProperties.includes(property));
158
+ });
159
+ if (matchingReadModels.length !== 1) {
160
+ return undefined;
161
+ }
162
+ return matchingReadModels[0].metadata.id.value;
163
+ }
164
+ buildModelBoundDefinition(type) {
165
+ if (!isModelBoundProjection(type)) {
166
+ throw new Error(`Type '${type.name}' is missing model-bound projection metadata.`);
167
+ }
168
+ const readModelIdentifier = getReadModelId(type);
169
+ const eventSequenceId = getEventSequenceMetadata(type);
170
+ const properties = TypeIntrospector.getTrackedProperties(type);
171
+ const prototype = type.prototype;
172
+ const fromByEventType = new Map();
173
+ const joinByEventType = new Map();
174
+ const removedWithByEventType = new Map();
175
+ const removedWithJoinByEventType = new Map();
176
+ const childrenByProperty = {};
177
+ const nestedByProperty = {};
178
+ const fromEvents = getFromEventMetadata(type);
179
+ for (const fromEvent of fromEvents) {
180
+ const eventType = toContractEventType(fromEvent.eventType);
181
+ const eventKey = getEventTypeMapKey(eventType);
182
+ fromByEventType.set(eventKey, {
183
+ Key: eventType,
184
+ Value: {
185
+ Properties: {},
186
+ Key: fromEvent.constantKey ? constantValueExpression(fromEvent.constantKey) : (fromEvent.key ?? '$eventSourceId'),
187
+ ParentKey: fromEvent.parentKey ?? ''
188
+ }
189
+ });
190
+ }
191
+ const removedWithClass = getRemovedWithClassMetadata(type);
192
+ for (const removed of removedWithClass) {
193
+ const eventType = toContractEventType(removed.eventType);
194
+ removedWithByEventType.set(getEventTypeMapKey(eventType), {
195
+ Key: eventType,
196
+ Value: { Key: removed.key ?? '$eventSourceId', ParentKey: removed.parentKey ?? '' }
197
+ });
198
+ }
199
+ const removedWithJoinClass = getRemovedWithJoinClassMetadata(type);
200
+ for (const removed of removedWithJoinClass) {
201
+ const eventType = toContractEventType(removed.eventType);
202
+ removedWithJoinByEventType.set(getEventTypeMapKey(eventType), {
203
+ Key: eventType,
204
+ Value: { Key: removed.key ?? '$eventSourceId' }
205
+ });
206
+ }
207
+ for (const property of properties) {
208
+ applyPropertyMappings(prototype, property, fromByEventType);
209
+ for (const mapping of getJoinMetadata(prototype, property)) {
210
+ const entry = this.ensureJoinEntry(joinByEventType, mapping.eventType);
211
+ entry.Value.On = mapping.on ?? (entry.Value.On || property);
212
+ entry.Value.Properties[property] = mapping.eventPropertyName ?? property;
213
+ }
214
+ for (const removed of getRemovedWithPropertyMetadata(prototype, property)) {
215
+ const eventType = toContractEventType(removed.eventType);
216
+ removedWithByEventType.set(getEventTypeMapKey(eventType), {
217
+ Key: eventType,
218
+ Value: { Key: removed.key ?? '$eventSourceId', ParentKey: removed.parentKey ?? '' }
219
+ });
220
+ }
221
+ for (const removed of getRemovedWithJoinPropertyMetadata(prototype, property)) {
222
+ const eventType = toContractEventType(removed.eventType);
223
+ removedWithJoinByEventType.set(getEventTypeMapKey(eventType), {
224
+ Key: eventType,
225
+ Value: { Key: removed.key ?? '$eventSourceId' }
226
+ });
227
+ }
228
+ const childrenFromList = getChildrenFromMetadata(prototype, property);
229
+ if (childrenFromList.length > 0) {
230
+ childrenByProperty[property] = buildChildrenEntry(type, property, childrenFromList);
231
+ }
232
+ const propertyIsNested = isNested(prototype, property);
233
+ if (propertyIsNested) {
234
+ nestedByProperty[property] = buildNestedEntry(type, property);
235
+ }
236
+ // A scalar root property clears back to no value when the given event is observed.
237
+ // Nested single-object clearWith is handled by buildNestedEntry instead.
238
+ if (childrenFromList.length === 0 && !propertyIsNested) {
239
+ for (const clearWith of getClearWithPropertyMetadata(prototype, property)) {
240
+ const entry = ensureFromEntry(fromByEventType, clearWith.eventType);
241
+ entry.Value.Properties[property] = '$null';
242
+ }
243
+ }
244
+ }
245
+ const allProperties = {};
246
+ for (const property of properties) {
247
+ const fromEvery = getFromEveryMetadata(prototype, property) ?? getFromAllMetadata(prototype, property);
248
+ if (fromEvery) {
249
+ allProperties[property] = fromEvery.contextProperty
250
+ ? fromEvery.contextProperty
251
+ : (fromEvery.property ?? property);
252
+ }
253
+ }
254
+ let from = Array.from(fromByEventType.values());
255
+ let join = Array.from(joinByEventType.values());
256
+ let variant;
257
+ const variantMetadata = getVariantOfMetadata(type);
258
+ if (variantMetadata) {
259
+ const entersOnList = getEntersOnMetadata(type);
260
+ const enteringEventTypes = entersOnList.map(entersOn => {
261
+ const contractType = toContractEventType(entersOn.eventType);
262
+ if (entersOn.key) {
263
+ const entry = ensureFromEntry(fromByEventType, entersOn.eventType);
264
+ entry.Value.Key = entersOn.key;
265
+ }
266
+ return contractType;
267
+ });
268
+ from = Array.from(fromByEventType.values());
269
+ const globalHandlers = new Map();
270
+ for (const handlerType of this._clientArtifacts.globalForHandlers) {
271
+ const globalForMetadata = getGlobalForMetadata(handlerType);
272
+ if (globalForMetadata?.identity === variantMetadata.identity) {
273
+ globalHandlers.set(handlerType.name, this.buildFromRecordsForType(handlerType));
274
+ }
275
+ }
276
+ const memberNames = new Set(getReadModelMetadata(type)?.members.keys() ?? TypeIntrospector.getMembers(type).keys());
277
+ const merged = mergeGlobalHandlers(type.name, memberNames, from, globalHandlers);
278
+ const reclassified = reclassify(type.name, merged, join, enteringEventTypes, variantMetadata.key);
279
+ from = reclassified.from;
280
+ join = reclassified.join;
281
+ variant = { identity: variantMetadata.identity, key: variantMetadata.key, enteringEventTypes };
282
+ }
283
+ const definition = {
284
+ EventSequenceId: eventSequenceId ?? EventSequenceId.eventLog.value,
285
+ Identifier: readModelIdentifier,
286
+ ReadModel: readModelIdentifier,
287
+ IsActive: !isPassive(type),
288
+ IsRewindable: !isNotRewindable(type),
289
+ InitialModelState: '{}',
290
+ From: from,
291
+ Join: join,
292
+ Children: childrenByProperty,
293
+ FromEvery: [],
294
+ All: {
295
+ Properties: allProperties,
296
+ IncludeChildren: false,
297
+ AutoMap: AutoMap.Inherit
298
+ },
299
+ RemovedWith: Array.from(removedWithByEventType.values()),
300
+ RemovedWithJoin: Array.from(removedWithJoinByEventType.values()),
301
+ LastUpdated: { Value: '' },
302
+ Tags: [],
303
+ AutoMap: isNoAutoMap(type) ? AutoMap.Disabled : AutoMap.Enabled,
304
+ NoAutoMapProperties: properties.filter(property => isPropertyNoAutoMap(prototype, property)),
305
+ Nested: nestedByProperty
306
+ };
307
+ return { typeName: type.name, definition, variant };
308
+ }
309
+ /**
310
+ * Builds event mappings for a global variant handler without creating a separate projection.
311
+ * @param type - The global handler type containing from-event and property mappings.
312
+ * @returns The event mappings to merge into each matching variant.
313
+ */
314
+ buildFromRecordsForType(type) {
315
+ const fromByEventType = new Map();
316
+ const fromEvents = getFromEventMetadata(type);
317
+ for (const fromEvent of fromEvents) {
318
+ const eventType = toContractEventType(fromEvent.eventType);
319
+ fromByEventType.set(getEventTypeMapKey(eventType), {
320
+ Key: eventType,
321
+ Value: {
322
+ Properties: {},
323
+ Key: fromEvent.constantKey ? constantValueExpression(fromEvent.constantKey) : (fromEvent.key ?? '$eventSourceId'),
324
+ ParentKey: fromEvent.parentKey ?? ''
325
+ }
326
+ });
327
+ }
328
+ const prototype = type.prototype;
329
+ for (const property of TypeIntrospector.getTrackedProperties(type)) {
330
+ applyPropertyMappings(prototype, property, fromByEventType);
331
+ }
332
+ return Array.from(fromByEventType.values());
333
+ }
334
+ ensureJoinEntry(joinByEventType, eventTypeConstructor) {
335
+ const eventType = toContractEventType(eventTypeConstructor);
336
+ const key = getEventTypeMapKey(eventType);
337
+ const existing = joinByEventType.get(key);
338
+ if (existing) {
339
+ return existing;
340
+ }
341
+ const created = { Key: eventType, Value: { On: '', Properties: {}, Key: '$eventSourceId' } };
342
+ joinByEventType.set(key, created);
343
+ return created;
344
+ }
345
+ /** Hash the final wire definition, excluding LastUpdated itself, for stable metadata. */
346
+ computeStableLastUpdated(definition) {
347
+ const { LastUpdated: _omit, ...rest } = definition;
348
+ const content = canonicalStringify(rest);
349
+ let hash = 5381;
350
+ for (let i = 0; i < content.length; i++) {
351
+ hash = ((hash << 5) + hash + content.charCodeAt(i)) >>> 0;
352
+ }
353
+ return new Date(hash * 1000).toISOString();
354
+ }
355
+ }
356
+ //# 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"}