@cratis/chronicle 6.30.0 → 6.31.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.
Files changed (44) hide show
  1. package/compliance/for_PIIManager/against_a_kernel/when_erasing_a_subject.integration.spec.ts +132 -0
  2. package/connection/ChronicleConnection.ts +1 -0
  3. package/connection/encodeExplicitFalse.ts +56 -0
  4. package/connection/for_encodeExplicitFalse/when_encoding_reactor_definition.spec.ts +34 -0
  5. package/connection/for_encodeExplicitFalse/when_encoding_webhook_definition.spec.ts +39 -0
  6. package/connection/for_encodeExplicitFalse/wireFields.ts +24 -0
  7. package/dist/connection/ChronicleConnection.d.ts +1 -0
  8. package/dist/connection/ChronicleConnection.d.ts.map +1 -1
  9. package/dist/connection/ChronicleConnection.js +1 -0
  10. package/dist/connection/ChronicleConnection.js.map +1 -1
  11. package/dist/connection/encodeExplicitFalse.d.ts +6 -0
  12. package/dist/connection/encodeExplicitFalse.d.ts.map +1 -0
  13. package/dist/connection/encodeExplicitFalse.js +45 -0
  14. package/dist/connection/encodeExplicitFalse.js.map +1 -0
  15. package/dist/connection/for_encodeExplicitFalse/wireFields.d.ts +6 -0
  16. package/dist/connection/for_encodeExplicitFalse/wireFields.d.ts.map +1 -0
  17. package/dist/connection/for_encodeExplicitFalse/wireFields.js +24 -0
  18. package/dist/connection/for_encodeExplicitFalse/wireFields.js.map +1 -0
  19. package/dist/testing/projections/ProjectionCapabilities.d.ts.map +1 -1
  20. package/dist/testing/projections/ProjectionCapabilities.js +8 -2
  21. package/dist/testing/projections/ProjectionCapabilities.js.map +1 -1
  22. package/dist/testing/projections/ProjectionChildrenCapabilities.d.ts +33 -0
  23. package/dist/testing/projections/ProjectionChildrenCapabilities.d.ts.map +1 -0
  24. package/dist/testing/projections/ProjectionChildrenCapabilities.js +108 -0
  25. package/dist/testing/projections/ProjectionChildrenCapabilities.js.map +1 -0
  26. package/dist/testing/projections/ProjectionReadModelProcessor.d.ts +6 -0
  27. package/dist/testing/projections/ProjectionReadModelProcessor.d.ts.map +1 -1
  28. package/dist/testing/projections/ProjectionReadModelProcessor.js +94 -36
  29. package/dist/testing/projections/ProjectionReadModelProcessor.js.map +1 -1
  30. package/dist/tsconfig.tsbuildinfo +1 -1
  31. package/events/constraints/for_Constraints/against_a_kernel/when_appending_unique_values_concurrently.integration.spec.ts +189 -0
  32. package/events/migrations/for_EventTypeMigrators/against_a_kernel/when_replaying_an_older_generation.integration.spec.ts +156 -0
  33. package/jobs/for_Jobs/against_a_kernel/when_managing_a_replay_job.integration.spec.ts +114 -0
  34. package/package.json +2 -1
  35. package/reactors/for_Reactors/against_a_kernel/when_replaying_once_only_reactors.integration.spec.ts +111 -0
  36. package/testing/ReadModelScenario.childrenFrom.spec.ts +31 -5
  37. package/testing/projections/ProjectionCapabilities.ts +10 -3
  38. package/testing/projections/ProjectionChildrenCapabilities.ts +119 -0
  39. package/testing/projections/ProjectionReadModelProcessor.ts +105 -36
  40. package/testing/projections/for_ProjectionCapabilities/when_rejecting_unsupported_children_operations.spec.ts +73 -0
  41. package/testing/projections/for_ProjectionCapabilities/when_rejecting_unsupported_operations.spec.ts +0 -3
  42. package/vitest.config.ts +2 -1
  43. package/vitest.integration.config.ts +19 -0
  44. package/webhooks/for_Webhooks/against_a_kernel/when_registering_and_removing_a_webhook.integration.spec.ts +88 -0
@@ -0,0 +1,33 @@
1
+ import { AutoMap } from '@cratis/chronicle.contracts';
2
+ import type { ContractEventType, FromRecord, RemovedWithRecord } from '../../projections/declarative/ProjectionBuilderCore.js';
3
+ import type { ChildrenDefinitionLike } from '../../projections/modelBound/childrenAndNestedBuilder.js';
4
+ import type { JsonSchema } from '../../schemas/JsonSchema.js';
5
+ /** Rejects an operation at a contract path, optionally naming the responsible declaration. */
6
+ export type RejectOperation = (path: string, reason: string, fallback?: string) => never;
7
+ /** Validates a scalar mapping into a target schema, rejecting anything outside the fixture-backed subset. */
8
+ export type CheckMapping = (modelSchema: JsonSchema, eventSchema: JsonSchema, destination: string, expression: string, path: string) => void;
9
+ /** The inputs children validation shares with root validation. */
10
+ export interface ChildrenValidationContext {
11
+ readonly schema: JsonSchema;
12
+ readonly rootAutoMap: AutoMap;
13
+ readonly hasInitialModelState: boolean;
14
+ readonly from: readonly FromRecord[];
15
+ readonly removedWith: readonly RemovedWithRecord[];
16
+ readonly declarationFor: (path: string) => string | undefined;
17
+ readonly requireEventSchema: (eventType: ContractEventType, path: string) => JsonSchema;
18
+ readonly checkMapping: CheckMapping;
19
+ readonly reject: RejectOperation;
20
+ }
21
+ /**
22
+ * Validates one level of children collections against the packaged-kernel fixtures
23
+ * (`children-from-keyed`, `children-identified-removed`, `children-untyped-items`).
24
+ */
25
+ export declare class ProjectionChildrenCapabilities {
26
+ /**
27
+ * Throws for the first children operation outside the fixture-backed subset.
28
+ * @param children - The wire `Children` section of the root definition.
29
+ * @param context - Shared root validation state.
30
+ */
31
+ static validate(children: Record<string, ChildrenDefinitionLike>, context: ChildrenValidationContext): void;
32
+ }
33
+ //# sourceMappingURL=ProjectionChildrenCapabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectionChildrenCapabilities.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionChildrenCapabilities.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC/H,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACvG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,8FAA8F;AAC9F,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,KAAK,CAAC;AAEzF,6GAA6G;AAC7G,MAAM,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7I,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACtC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,kBAAkB,EAAE,CAAC,SAAS,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC;IACxF,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CACpC;AAID;;;GAGG;AACH,qBAAa,8BAA8B;IACvC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI,CA6E1G;CACJ"}
@@ -0,0 +1,108 @@
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 } from '@cratis/chronicle.contracts';
4
+ import { eventContractPath } from '../../projections/eventContractPath.js';
5
+ const kernelBacked = 'require a kernel-backed test (ChronicleKernelScenario / live kernel)';
6
+ /**
7
+ * Validates one level of children collections against the packaged-kernel fixtures
8
+ * (`children-from-keyed`, `children-identified-removed`, `children-untyped-items`).
9
+ */
10
+ export class ProjectionChildrenCapabilities {
11
+ /**
12
+ * Throws for the first children operation outside the fixture-backed subset.
13
+ * @param children - The wire `Children` section of the root definition.
14
+ * @param context - Shared root validation state.
15
+ */
16
+ static validate(children, context) {
17
+ if (Object.keys(children).length && context.hasInitialModelState) {
18
+ context.reject('InitialModelState', `children with initial model state ${kernelBacked}`);
19
+ }
20
+ const owners = new Map();
21
+ for (const [property, child] of Object.entries(children)) {
22
+ const base = `Children.${property}`;
23
+ const declaration = context.declarationFor(base);
24
+ const reject = (path, reason) => context.reject(path, reason, declaration);
25
+ const wire = child;
26
+ if ((child.Join ?? []).length)
27
+ reject(`${base}.Join`, 'joins require a kernel-backed test');
28
+ if (Object.keys(child.Children ?? {}).length)
29
+ reject(`${base}.Children`, `nested children collections ${kernelBacked}`);
30
+ if (Object.keys(child.Nested ?? {}).length)
31
+ reject(`${base}.Nested`, `nested projections inside children ${kernelBacked}`);
32
+ if ((child.RemovedWithJoin ?? []).length)
33
+ reject(`${base}.RemovedWithJoin`, `removedWithJoin inside children ${kernelBacked}`);
34
+ if (wire.FromEventProperty)
35
+ reject(`${base}.FromEventProperty`, `value children from an event property ${kernelBacked}`);
36
+ if (Object.keys(child.All?.Properties ?? {}).length || child.All?.IncludeChildren || (child.All?.AutoMap ?? AutoMap.Inherit) !== AutoMap.Inherit) {
37
+ reject(`${base}.All`, `fromEvery/all inside children ${kernelBacked}`);
38
+ }
39
+ if ((child.NoAutoMapProperties ?? []).length)
40
+ reject(`${base}.NoAutoMapProperties`, `child AutoMap exclusions ${kernelBacked}`);
41
+ const autoMap = child.AutoMap === AutoMap.Inherit ? context.rootAutoMap : child.AutoMap;
42
+ if (autoMap === AutoMap.Disabled)
43
+ reject(`${base}.AutoMap`, `children with AutoMap disabled ${kernelBacked}`);
44
+ const collection = context.schema.properties?.[property];
45
+ const items = collection?.items;
46
+ if (collection?.type !== 'array' || items?.type !== 'object') {
47
+ reject(base, `children collections must target an array of objects; other targets ${kernelBacked}`);
48
+ }
49
+ const typed = items.properties !== undefined;
50
+ const identifiedBy = child.IdentifiedBy;
51
+ if (!identifiedBy || identifiedBy === '*NotSet*' || identifiedBy.includes('.')) {
52
+ reject(`${base}.IdentifiedBy`, `children without a direct identifying property ${kernelBacked}`);
53
+ }
54
+ const identity = items.properties?.[identifiedBy];
55
+ if (typed && (identity?.type !== 'string' || identity.format)) {
56
+ reject(`${base}.IdentifiedBy`, `only a string child identifier is fixture-backed; other identifiers ${kernelBacked}`);
57
+ }
58
+ for (const entry of [...(child.From ?? []), ...(child.RemovedWith ?? [])]) {
59
+ const section = (child.From ?? []).includes(entry) ? 'From' : 'RemovedWith';
60
+ const path = `${base}.${eventContractPath(section, entry.Key)}`;
61
+ const owner = owners.get(entry.Key.Id);
62
+ if (owner)
63
+ reject(path, `an event subscribed by more than one children operation (${owner}) ${kernelBacked}`);
64
+ owners.set(entry.Key.Id, path);
65
+ if (context.removedWith.some(removal => removal.Key.Id === entry.Key.Id) ||
66
+ (section === 'RemovedWith' && context.from.some(root => root.Key.Id === entry.Key.Id))) {
67
+ reject(path, `an event that both removes and changes the parent or a child ${kernelBacked}`);
68
+ }
69
+ const eventSchema = context.requireEventSchema(entry.Key, path);
70
+ const key = eventSchema.properties?.[entry.Value.Key];
71
+ if (!/^[A-Za-z_]\w*$/.test(entry.Value.Key) || key?.type !== 'string' || key.format) {
72
+ reject(`${path}.Key`, `only a child key read from a string event property is fixture-backed; other child keys ${kernelBacked}`);
73
+ }
74
+ if (entry.Value.ParentKey && entry.Value.ParentKey !== '$eventSourceId') {
75
+ reject(`${path}.ParentKey`, `parent keys other than the event source id ${kernelBacked}`);
76
+ }
77
+ if (section === 'RemovedWith')
78
+ continue;
79
+ const properties = entry.Value.Properties ?? {};
80
+ for (const [destination, expression] of Object.entries(properties)) {
81
+ const mappingPath = `${path}.Properties.${destination}`;
82
+ if (destination === identifiedBy) {
83
+ if (expression !== entry.Value.Key)
84
+ reject(mappingPath, `mapping the child identifier from anything but the child key ${kernelBacked}`);
85
+ continue;
86
+ }
87
+ reject(mappingPath, `explicit child property mappings (renames, event context, constants, nulls) ${kernelBacked}; only same-name AutoMap into typed children is supported`);
88
+ }
89
+ if (!typed)
90
+ continue;
91
+ for (const destination of Object.keys(items.properties ?? {})) {
92
+ if (Object.keys(properties).some(name => name.toLowerCase() === destination.toLowerCase()))
93
+ continue;
94
+ const candidates = Object.keys(eventSchema.properties ?? {}).filter(source => source.toLowerCase() === destination.toLowerCase());
95
+ if (!candidates.length)
96
+ continue;
97
+ const mappingPath = `${path}.AutoMap.${destination}`;
98
+ if (destination === identifiedBy)
99
+ reject(mappingPath, `AutoMap into the child identifier ${kernelBacked}`);
100
+ if (candidates.length > 1)
101
+ reject(mappingPath, `inferred AutoMap source is ambiguous: ${candidates.join(', ')}`);
102
+ context.checkMapping(items, eventSchema, destination, candidates[0], mappingPath);
103
+ }
104
+ }
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=ProjectionChildrenCapabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectionChildrenCapabilities.js","sourceRoot":"","sources":["../../../testing/projections/ProjectionChildrenCapabilities.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAwB3E,MAAM,YAAY,GAAG,sEAAsE,CAAC;AAE5F;;;GAGG;AACH,MAAM,OAAO,8BAA8B;IACvC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,QAAgD,EAAE,OAAkC;QAChG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;YAC/D,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,YAAY,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;QACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,MAAc,EAAS,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAClG,MAAM,IAAI,GAAG,KAA2C,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,IAAI,OAAO,EAAE,oCAAoC,CAAC,CAAC;YAC5F,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,IAAI,WAAW,EAAE,+BAA+B,YAAY,EAAE,CAAC,CAAC;YACxH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,sCAAsC,YAAY,EAAE,CAAC,CAAC;YAC3H,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,IAAI,kBAAkB,EAAE,mCAAmC,YAAY,EAAE,CAAC,CAAC;YAC/H,IAAI,IAAI,CAAC,iBAAiB;gBAAE,MAAM,CAAC,GAAG,IAAI,oBAAoB,EAAE,yCAAyC,YAAY,EAAE,CAAC,CAAC;YACzH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,eAAe,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC/I,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,iCAAiC,YAAY,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,MAAM;gBAAE,MAAM,CAAC,GAAG,IAAI,sBAAsB,EAAE,4BAA4B,YAAY,EAAE,CAAC,CAAC;YAChI,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACxF,IAAI,OAAO,KAAK,OAAO,CAAC,QAAQ;gBAAE,MAAM,CAAC,GAAG,IAAI,UAAU,EAAE,kCAAkC,YAAY,EAAE,CAAC,CAAC;YAE9G,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,UAAU,EAAE,KAAK,CAAC;YAChC,IAAI,UAAU,EAAE,IAAI,KAAK,OAAO,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3D,MAAM,CAAC,IAAI,EAAE,uEAAuE,YAAY,EAAE,CAAC,CAAC;YACxG,CAAC;YACD,MAAM,KAAK,GAAG,KAAM,CAAC,UAAU,KAAK,SAAS,CAAC;YAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YACxC,IAAI,CAAC,YAAY,IAAI,YAAY,KAAK,UAAU,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7E,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,kDAAkD,YAAY,EAAE,CAAC,CAAC;YACrG,CAAC;YACD,MAAM,QAAQ,GAAG,KAAM,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,uEAAuE,YAAY,EAAE,CAAC,CAAC;YAC1H,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACxE,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;gBAC1F,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvC,IAAI,KAAK;oBAAE,MAAM,CAAC,IAAI,EAAE,4DAA4D,KAAK,KAAK,YAAY,EAAE,CAAC,CAAC;gBAC9G,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC/B,IAAI,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpE,CAAC,OAAO,KAAK,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACzF,MAAM,CAAC,IAAI,EAAE,gEAAgE,YAAY,EAAE,CAAC,CAAC;gBACjG,CAAC;gBACD,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChE,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;oBAClF,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,0FAA0F,YAAY,EAAE,CAAC,CAAC;gBACpI,CAAC;gBACD,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,gBAAgB,EAAE,CAAC;oBACtE,MAAM,CAAC,GAAG,IAAI,YAAY,EAAE,8CAA8C,YAAY,EAAE,CAAC,CAAC;gBAC9F,CAAC;gBACD,IAAI,OAAO,KAAK,aAAa;oBAAE,SAAS;gBACxC,MAAM,UAAU,GAAI,KAAoB,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;gBAChE,KAAK,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBACjE,MAAM,WAAW,GAAG,GAAG,IAAI,eAAe,WAAW,EAAE,CAAC;oBACxD,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;wBAC/B,IAAI,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG;4BAAE,MAAM,CAAC,WAAW,EAAE,gEAAgE,YAAY,EAAE,CAAC,CAAC;wBACxI,SAAS;oBACb,CAAC;oBACD,MAAM,CAAC,WAAW,EAAE,+EAA+E,YAAY,2DAA2D,CAAC,CAAC;gBAChL,CAAC;gBACD,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,KAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC;wBAAE,SAAS;oBACrG,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;oBAClI,IAAI,CAAC,UAAU,CAAC,MAAM;wBAAE,SAAS;oBACjC,MAAM,WAAW,GAAG,GAAG,IAAI,YAAY,WAAW,EAAE,CAAC;oBACrD,IAAI,WAAW,KAAK,YAAY;wBAAE,MAAM,CAAC,WAAW,EAAE,qCAAqC,YAAY,EAAE,CAAC,CAAC;oBAC3G,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;wBAAE,MAAM,CAAC,WAAW,EAAE,yCAAyC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACjH,OAAO,CAAC,YAAY,CAAC,KAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACvF,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
@@ -12,6 +12,7 @@ export declare class ProjectionReadModelProcessor<TReadModel extends object> imp
12
12
  private readonly _initial;
13
13
  private readonly _from;
14
14
  private readonly _removed;
15
+ private readonly _children;
15
16
  private readonly _eventSchemas;
16
17
  private readonly _bindings;
17
18
  private _engineState;
@@ -23,7 +24,12 @@ export declare class ProjectionReadModelProcessor<TReadModel extends object> imp
23
24
  get publicRead(): Record<string, Record<string, unknown>>;
24
25
  process(events: readonly ScenarioEvent[]): Promise<Map<string, ReadModelState<TReadModel>>>;
25
26
  private keyFor;
27
+ private applyChild;
28
+ private withAutoMap;
29
+ private apply;
30
+ private initialValues;
26
31
  private initialState;
32
+ private identityState;
27
33
  private normalize;
28
34
  private materialize;
29
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectionReadModelProcessor.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionReadModelProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAKxG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,sFAAsF;AACtF,qBAAa,4BAA4B,CAAC,UAAU,SAAS,MAAM,CAAE,YAAW,mBAAmB,CAAC,UAAU,CAAC;IAU/F,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAoE,OAAO,CAAC,QAAQ,CAAC,WAAW;IATnI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;IAC3G,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,WAAW,CAA+C;IAElE,YAA6B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAmB,WAAW,EAAE,oBAAoB,EAgBxJ;IAED,0FAA0F;IAC1F,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAA+C;IACzG,uEAAuE;IACvE,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAA8C;IAEjG,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAkDhG;IAED,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,WAAW;CAGtB"}
1
+ {"version":3,"file":"ProjectionReadModelProcessor.d.ts","sourceRoot":"","sources":["../../../testing/projections/ProjectionReadModelProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAMxG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAczD,sFAAsF;AACtF,qBAAa,4BAA4B,CAAC,UAAU,SAAS,MAAM,CAAE,YAAW,mBAAmB,CAAC,UAAU,CAAC;IAW/F,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAoE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAVnI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0B;IACnD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoC;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiF;IAC3G,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,WAAW,CAA+C;IAElE,YAA6B,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAmB,WAAW,EAAE,oBAAoB,EA8BxJ;IAED,0FAA0F;IAC1F,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAA+C;IACzG,uEAAuE;IACvE,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAA8C;IAEjG,OAAO,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CA6ChG;IAED,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,WAAW;CAGtB"}
@@ -15,6 +15,7 @@ export class ProjectionReadModelProcessor {
15
15
  _initial;
16
16
  _from;
17
17
  _removed;
18
+ _children;
18
19
  _eventSchemas;
19
20
  _bindings;
20
21
  _engineState = {};
@@ -29,12 +30,26 @@ export class ProjectionReadModelProcessor {
29
30
  const wire = _definition;
30
31
  this._from = new Map((wire.From ?? []).map(entry => [entry.Key.Id, entry]));
31
32
  this._removed = new Set((wire.RemovedWith ?? []).map(entry => entry.Key.Id));
32
- this._bindings = new Map([...(wire.From ?? []), ...(wire.RemovedWith ?? [])].map(entry => {
33
+ const declarationFor = (path) => compiled.provenance.get(_definition)?.find(provenance => provenance.contractPath === path)?.declaration;
34
+ const bindings = [...(wire.From ?? []), ...(wire.RemovedWith ?? [])].map(entry => {
33
35
  const section = (wire.From ?? []).includes(entry) ? 'From' : 'RemovedWith';
34
36
  const path = eventContractPath(section, entry.Key);
35
- const declaration = compiled.provenance.get(_definition)?.find(provenance => provenance.contractPath === path)?.declaration ?? 'contract';
36
- return [entry.Key.Id, { generation: entry.Key.Generation, path, declaration }];
37
- }));
37
+ return [entry.Key.Id, { generation: entry.Key.Generation, path, declaration: declarationFor(path) ?? 'contract' }];
38
+ });
39
+ const children = new Map();
40
+ for (const [property, child] of Object.entries(wire.Children ?? {})) {
41
+ const items = this._schema.properties[property].items;
42
+ for (const entry of [...child.From, ...child.RemovedWith]) {
43
+ const from = child.From.includes(entry) ? entry : undefined;
44
+ const path = `Children.${property}.${eventContractPath(from ? 'From' : 'RemovedWith', entry.Key)}`;
45
+ children.set(entry.Key.Id, { property, identifiedBy: child.IdentifiedBy, key: entry.Value.Key, from, items });
46
+ if (!bindings.some(([id]) => id === entry.Key.Id)) {
47
+ bindings.push([entry.Key.Id, { generation: entry.Key.Generation, path, declaration: declarationFor(`Children.${property}`) ?? 'contract' }]);
48
+ }
49
+ }
50
+ }
51
+ this._children = children;
52
+ this._bindings = new Map(bindings);
38
53
  this._eventSchemas = new Map([...(compiled.eventSchemas.get(_definition) ?? new Map()).values()]
39
54
  .map(entry => [entry.eventType.Id, entry.schema]));
40
55
  }
@@ -49,43 +64,40 @@ export class ProjectionReadModelProcessor {
49
64
  const typeId = event.context.eventType.id.value;
50
65
  const from = this._from.get(typeId);
51
66
  const removed = this._removed.has(typeId);
52
- if (!from && !removed)
67
+ const child = this._children.get(typeId);
68
+ if (!from && !removed && !child)
53
69
  continue;
54
70
  const binding = this._bindings.get(typeId);
55
71
  if (event.context.eventType.generation.value !== binding.generation) {
56
72
  throw new UnsupportedProjectionOperation(String(this._definition.ReadModel), binding.path, binding.declaration, `seeded event generation ${event.context.eventType.generation.value} differs from subscribed generation ${binding.generation}; multi-generation history requires a kernel-backed test`);
57
73
  }
58
- // A root removal has the final say when an event is registered for both operations.
59
74
  const key = this.keyFor(event.sourceId);
60
75
  if (removed) {
61
76
  delete engine[key];
62
77
  states.set(event.sourceId, { instance: null, deleted: true });
63
78
  continue;
64
79
  }
65
- if (!from)
66
- continue;
67
- const state = engine[key] ?? this.initialState(key, event);
68
- const properties = { ...from.Value.Properties };
69
80
  const schema = this._eventSchemas.get(typeId);
70
81
  const content = ProjectionValueConverter.eventContent(event.content, schema);
71
- if (this._definition.AutoMap !== AutoMap.Disabled && schema) {
72
- const explicit = new Set(Object.keys(properties).map(name => name.toLowerCase()));
73
- const excluded = new Set((this._definition.NoAutoMapProperties ?? []).map(name => name.toLowerCase()));
74
- for (const source of Object.keys(schema.properties ?? {})) {
75
- const destination = Object.keys(this._schema.properties ?? {}).find(name => name.toLowerCase() === source.toLowerCase());
76
- if (destination && !explicit.has(destination.toLowerCase()) && !excluded.has(destination.toLowerCase())) {
77
- properties[destination] = source;
78
- explicit.add(destination.toLowerCase());
79
- }
80
- }
82
+ let state = engine[key];
83
+ if (!state) {
84
+ // SetInitialState: an event only a child subscribes to creates an uninitialized parent.
85
+ state = from ? this.initialState(key, event) : this.identityState(key, event, false);
81
86
  }
82
- for (const [destination, expression] of Object.entries(properties)) {
83
- const target = this._schema.properties[destination];
84
- const value = ProjectionExpressionEvaluator.value(expression, content, event.context, target);
85
- // The kernel compares old and new null values; null on an absent member is no change.
86
- if (value !== null || state[destination] !== undefined)
87
- state[destination] = value;
87
+ else if (state.__initialized === false) {
88
+ for (const [name, value] of Object.entries(this.initialValues()))
89
+ if (!(name in state))
90
+ state[name] = value;
91
+ state.__initialized = true;
88
92
  }
93
+ if (from) {
94
+ const explicit = { ...from.Value.Properties };
95
+ const excluded = (this._definition.NoAutoMapProperties ?? []);
96
+ const properties = this._definition.AutoMap !== AutoMap.Disabled ? this.withAutoMap(explicit, schema, this._schema, excluded) : explicit;
97
+ this.apply(properties, content, event, this._schema, state);
98
+ }
99
+ if (child)
100
+ this.applyChild(child, content, event, schema, state, binding);
89
101
  // InMemorySink.ApplyChanges always restores lowercase id after applying mappings.
90
102
  state.id = ProjectionValueConverter.convert(key, this._schema.properties.id);
91
103
  engine[key] = state;
@@ -105,22 +117,68 @@ export class ProjectionReadModelProcessor {
105
117
  throw new RangeError(`Projection event source '${source}' is not a canonical ${identifier.type} identifier.`);
106
118
  return canonical;
107
119
  }
108
- initialState(key, event) {
120
+ applyChild(child, content, event, eventSchema, state, binding) {
121
+ const identity = ProjectionExpressionEvaluator.pathValue(content, child.key);
122
+ if (typeof identity !== 'string') {
123
+ throw new UnsupportedProjectionOperation(String(this._definition.ReadModel), binding.path, binding.declaration, `child key '${child.key}' has no string value in the seeded event; missing child keys require a kernel-backed test`);
124
+ }
125
+ const collection = (state[child.property] ??= []);
126
+ const index = collection.findIndex(item => item[child.identifiedBy] === identity);
127
+ if (!child.from) {
128
+ if (index >= 0)
129
+ collection.splice(index, 1);
130
+ return;
131
+ }
132
+ const item = index >= 0 ? collection[index] : { [child.identifiedBy]: identity };
133
+ if (index < 0)
134
+ collection.push(item);
135
+ // Validation admits only the identifier mapping explicitly; other fields come from same-name AutoMap.
136
+ // Kernel AutoMap is schema-driven: an untyped child item schema maps nothing (children-untyped-items).
137
+ const properties = child.items.properties ? this.withAutoMap({}, eventSchema, child.items, [child.identifiedBy]) : {};
138
+ this.apply(properties, content, event, child.items, item);
139
+ }
140
+ withAutoMap(explicit, eventSchema, target, exclusions) {
141
+ const properties = { ...explicit };
142
+ const mapped = new Set(Object.keys(properties).map(name => name.toLowerCase()));
143
+ const excluded = new Set(exclusions.map(name => name.toLowerCase()));
144
+ for (const source of Object.keys(eventSchema.properties ?? {})) {
145
+ const destination = Object.keys(target.properties ?? {}).find(name => name.toLowerCase() === source.toLowerCase());
146
+ if (destination && !mapped.has(destination.toLowerCase()) && !excluded.has(destination.toLowerCase())) {
147
+ properties[destination] = source;
148
+ mapped.add(destination.toLowerCase());
149
+ }
150
+ }
151
+ return properties;
152
+ }
153
+ apply(properties, content, event, target, state) {
154
+ for (const [destination, expression] of Object.entries(properties)) {
155
+ const value = ProjectionExpressionEvaluator.value(expression, content, event.context, target.properties[destination]);
156
+ // The kernel compares old and new null values; null on an absent member is no change.
157
+ if (value !== null || state[destination] !== undefined)
158
+ state[destination] = value;
159
+ }
160
+ }
161
+ initialValues() {
109
162
  const initial = Object.create(null);
110
163
  if (Object.keys(this._initial).length) {
111
- Object.assign(initial, ProjectionValueConverter.convert(structuredClone(this._initial), this._schema, false, false));
164
+ return Object.assign(initial, ProjectionValueConverter.convert(structuredClone(this._initial), this._schema, false, false));
112
165
  }
113
- if (!Object.keys(this._initial).length) {
114
- for (const [name, property] of Object.entries(this._schema.properties ?? {})) {
115
- if (property.type === 'array')
116
- initial[name] = [];
117
- }
166
+ for (const [name, property] of Object.entries(this._schema.properties ?? {})) {
167
+ if (property.type === 'array')
168
+ initial[name] = [];
118
169
  }
119
- initial.id = ProjectionValueConverter.convert(key, this._schema.properties.id);
120
- initial.__subject = event.context.subject ?? event.sourceId;
121
- initial.__initialized = true;
122
170
  return initial;
123
171
  }
172
+ initialState(key, event) {
173
+ return Object.assign(this.initialValues(), this.identityState(key, event, true));
174
+ }
175
+ identityState(key, event, initialized) {
176
+ const state = Object.create(null);
177
+ state.id = ProjectionValueConverter.convert(key, this._schema.properties.id);
178
+ state.__subject = event.context.subject ?? event.sourceId;
179
+ state.__initialized = initialized;
180
+ return state;
181
+ }
124
182
  normalize(state) {
125
183
  const result = Object.create(null);
126
184
  for (const [name, schema] of Object.entries(this._schema.properties ?? {})) {
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectionReadModelProcessor.js","sourceRoot":"","sources":["../../../testing/projections/ProjectionReadModelProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectionReadModelProcessor.js","sourceRoot":"","sources":["../../../testing/projections/ProjectionReadModelProcessor.ts"],"names":[],"mappings":"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"}