@cratis/chronicle 6.31.3 → 6.31.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/testing/InProcessEventSequence.d.ts.map +1 -1
- package/dist/testing/InProcessEventSequence.js +10 -2
- package/dist/testing/InProcessEventSequence.js.map +1 -1
- package/package.json +2 -2
- package/testing/InProcessEventSequence.ts +11 -2
- package/testing/for_EventScenario/when_appending_concept_fields/concept_scenario_behaviors.fixture.ts +178 -0
- package/testing/for_EventScenario/when_appending_concept_fields/with_legacy_decorators.legacy.spec.ts +74 -0
- package/testing/for_EventScenario/when_appending_concept_fields/with_standard_decorators.standard.spec.ts +74 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InProcessEventSequence.d.ts","sourceRoot":"","sources":["../../testing/InProcessEventSequence.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAI/F,OAAO,
|
|
1
|
+
{"version":3,"file":"InProcessEventSequence.d.ts","sourceRoot":"","sources":["../../testing/InProcessEventSequence.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { AppendOperationsBroadcaster } from '../eventSequences/AppendOperationsB
|
|
|
6
6
|
import { prepareBatchAppend } from '../eventSequences/prepareBatchAppend.js';
|
|
7
7
|
import { createAppendNotification, mapAppendNotificationCausation } from '../eventSequences/createAppendNotification.js';
|
|
8
8
|
import { createAppendResult } from '../eventSequences/createAppendResult.js';
|
|
9
|
-
import { Guid } from '@cratis/fundamentals';
|
|
9
|
+
import { conceptAsTypeKey, Guid, JsonSerializer, typeKeyOf } from '@cratis/fundamentals';
|
|
10
10
|
import { getEventTypeMetadata, getEventTypeFor } from '../events/eventTypeDecorator.js';
|
|
11
11
|
import { getTagsFor } from '../events/tagDecorator.js';
|
|
12
12
|
import { Tag } from '../events/Tag.js';
|
|
@@ -22,6 +22,14 @@ import { getRemovedConstraintNames } from '../events/constraints/removeConstrain
|
|
|
22
22
|
import { UnsupportedEventSequenceOperation } from './UnsupportedEventSequenceOperation.js';
|
|
23
23
|
// JS trim() omits U+0085, which the kernel trims. Reject unproven non-ASCII whitespace and controls.
|
|
24
24
|
const unprovenFilterCharacters = /[\u007f-\u009f]|(?=[^\x00-\x7f])\p{White_Space}/u;
|
|
25
|
+
function matchesConstrainedValue(value, content) {
|
|
26
|
+
// Use production serialization for concepts, not their wrapper object's runtime type.
|
|
27
|
+
// Keep rejecting other unproven conversions, such as a Date assigned to a string field.
|
|
28
|
+
if (value && typeof value === 'object' && typeKeyOf(value.constructor) === conceptAsTypeKey) {
|
|
29
|
+
return JsonSerializer.serialize(value) === JSON.stringify(content);
|
|
30
|
+
}
|
|
31
|
+
return value === content;
|
|
32
|
+
}
|
|
25
33
|
// Observers ReactorScenario registers to latch unsupported operations, keyed by sequence.
|
|
26
34
|
const unsupportedObservers = new WeakMap();
|
|
27
35
|
/**
|
|
@@ -444,7 +452,7 @@ export class InProcessEventSequence {
|
|
|
444
452
|
Object.keys(content).length !== Object.keys(properties).length ||
|
|
445
453
|
Object.entries(properties).some(([key, property]) => typeof content[key] !== property.type ||
|
|
446
454
|
(this._constraints?.isConstrainedProperty(metadata.eventType.id.value, key) &&
|
|
447
|
-
(
|
|
455
|
+
!matchesConstrainedValue(Reflect.get(event, key), content[key])) ||
|
|
448
456
|
(property.type === 'string' && !/^[\x20-\x21\x23-\x5b\x5d-\x7e\u00e9]*$/.test(content[key])))) {
|
|
449
457
|
throw this.unsupported(operation, event.constructor.name, mismatchReason);
|
|
450
458
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InProcessEventSequence.js","sourceRoot":"","sources":["../../testing/InProcessEventSequence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InProcessEventSequence.js","sourceRoot":"","sources":["../../testing/InProcessEventSequence.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AACzH,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAoB,MAAM,sBAAsB,CAAC;AAC3G,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAKnD,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAI/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAGtF,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAE3F,qGAAqG;AACrG,MAAM,wBAAwB,GAAG,kDAAkD,CAAC;AAEpF,SAAS,uBAAuB,CAAC,KAAc,EAAE,OAAgB;IAC7D,sFAAsF;IACtF,wFAAwF;IACxF,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,WAA0B,CAAC,KAAK,gBAAgB,EAAE,CAAC;QACzG,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,KAAK,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED,0FAA0F;AAC1F,MAAM,oBAAoB,GAAG,IAAI,OAAO,EAA8D,CAAC;AAEvG;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAgB,EAAE,QAA4D;IACvH,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,kGAAkG;AAClG,MAAM,OAAO,sBAAsB;IAgBwD,YAAY;IAf1F,EAAE,CAAkB;IACZ,QAAQ,GAAG,IAAI,GAAG,EAAqD,CAAC;IACxE,QAAQ,GAAoB,EAAE,CAAC;IAC/B,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,MAAM,CAAa;IACnB,cAAc,CAAgB;IACvC,MAAM,GAAG,KAAK,CAAC;IACf,gBAAgB,GAAG,KAAK,CAAC;IACzB,YAAY,CAAmB;IAC/B,oBAAoB,CAA+B;IACnD,KAAK,GAAG,KAAK,CAAC;IACL,QAAQ,GAAmB,EAAE,CAAC;IACtC,gBAAgB,GAAG,IAAI,2BAA2B,EAA6B,CAAC;IAEzF,YAAY,OAA6B,EAAE,UAAyB,EAAmB,YAAmC;4BAAnC,YAAY;QAC/F,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,KAAK,KAAK,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YAC9F,MAAM,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;QACjI,CAAC;QACD,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,IAAI,eAAe,CAAC,QAAQ,CAAC;QAC9D,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;YAChF,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,OAAO,CAAC,UAAU,EAAE,6CAA6C,CAAC,CAAC;QACpH,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,OAAO,CAAC,SAAS,EAAE,2CAA2C,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,IAAI,kBAAkB,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;QAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,EAAE,wCAAwC,CAAC,CAAC;YACnH,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC9E,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxF,MAAM,IAAI,CAAC,WAAW,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,oEAAoE,CAAC,CAAC;YAChJ,CAAC;YACD,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;YACxI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,SAAS,CAAC,UAAU,CAAC,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC1D,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,EAAE,qDAAqD,CAAC,CAAC;YACrH,CAAC;YACD,IAAI,OAAO,CAAC,WAAW,KAAK,UAAU,IAAI,yBAAyB,CAAC,IAAI,CAAC,CAAC,MAAM;gBAC5E,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,CAAC,WAAW,CAAC,kCAAkC,EAAE,IAAI,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;YACvH,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,IAAI,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;YACrI,mFAAmF;YACnF,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM;gBAChF,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBACtF,MAAM,CAAC,oBAAoB,KAAK,KAAK;gBACrC,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM;gBACvE,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC9D,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CACvD,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC;oBACxF,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM;oBACzF,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;oBAChG,QAAQ,CAAC,oBAAoB,KAAK,SAAS,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,CAAC,WAAW,CAAC,6BAA6B,EAAE,IAAI,CAAC,IAAI,EAAE,mEAAmE,CAAC,CAAC;YAC1I,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,KAA8B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,IAAI,cAAc,KAA+B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1H,2FAA2F;IAC3F,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,MAAgB;QACvC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;QACxI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,IAAI,OAA8B,CAAC;gBACnC,IAAI,CAAC;oBAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAAC,CAAC;wBACrC,CAAC;oBAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAAC,CAAC;gBAC1C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAC5G,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;YACD,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChE,8EAA8E;gBAC9E,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YAC5B,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACxB,CAAC;IACL,CAAC;IAED,IAAI,aAAa,KAAkC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC,CAAC,CAAC;IAE9I,KAAK,CAAC,MAAM,CAAC,aAAqB,EAAE,KAAa,EAAE,OAAuB;QACtE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,gDAAgD,CAAC,CAAC;QACtG,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,gDAAgD,CAAC,CAAC;YACjJ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAC;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,aAAa,EAAE,oDAAoD,CAAC,CAAC;YAC1J,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,UAAU,KAAK,SAAS;gBACtH,OAAO,CAAC,UAAU,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;gBACnG,OAAO,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,IAAI,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBAC/G,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,kEAAkE,CAAC,CAAC;YACzI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,kDAAkD,CAAC,CAAC;YAClI,IAAI,QAAgD,CAAC;YACrD,IAAI,OAAgC,CAAC;YACrC,IAAI,CAAC;gBACD,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAClH,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EACnE,6FAA6F,CAAC,CAAC;YACvG,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,YAAY,iCAAiC;oBAAE,MAAM,KAAK,CAAC;gBACpE,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,gDAAgD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7I,CAAC;YACD,IAAI,CAAC;gBACD,eAAe,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACxC,IAAI,CAAC,gDAAgD,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC9I,CAAC;YAAC,MAAM,CAAC;gBACL,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,sCAAsC,CAAC,CAAC;YACnH,CAAC;YACD,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC;gBAC7E,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClE,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,+DAA+D,CAAC,CAAC;YACtI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,wGAAwG;YACxG,IAAI,CAAC,CAAC,QAAQ,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAC/D,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC;gBACpE,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,iFAAiF,CAAC,CAAC;YACtJ,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7G,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,IAAI,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1I,MAAM,cAAc,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChH,MAAM,MAAM,GAAkB;gBAC1B,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,OAAO;gBACP,OAAO,EAAE;oBACL,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU;oBACnD,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,aAAa;oBACnD,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS;oBAC5E,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,OAAO;oBAC1G,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE;oBACzF,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;oBACvI,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC/C;aACJ,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACxG,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACpH,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,YAAY;oBAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;;oBAChE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;gBACpE,MAAM,YAAY,GAAG,CAAC,wBAAwB,CAAC,aAAa,EAAE,KAAK,EAAE,MAAM,EACvE,QAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,8BAA8B,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;gBAChH,IAAI,IAAI,CAAC,oBAAoB;oBAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;oBACvE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;gBAAS,CAAC;YACP,yEAAyE;YACzE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;IACL,CAAC;IAID,KAAK,CAAC,UAAU,CAAC,cAAgD,EAAE,eAA0C,EAAE,OAAuB;QAClI,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,gDAAgD,CAAC,CAAC;QACrI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,eAA2B,CAAC,CAAC,CAAC,cAAc,CAAC;YAClG,MAAM,MAAM,GAAG,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAA4C,CAAC;YAC3G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;YACvH,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;YACrH,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,MAAM,EAAE,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YAC7F,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,OAAO,cAAc,KAAK,QAAQ;oBAAE,MAAM;gBAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CACzE,CAAC,CAAC,eAAe,EAAE,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3I,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAC;gBAClG,CAAC;gBACD,MAAM,UAAU,GAAG,KAA8B,CAAC;gBAClD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;oBAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;gBACpG,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;gBAC7B,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAC9E,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;gBAC3G,CAAC;YACL,CAAC;YACD,IAAI,QAA+C,CAAC;YACpD,IAAI,CAAC;gBACD,MAAM,YAAY,GAA8B,MAAM,EAAE,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc;oBACtG,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;wBACpG,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;oBAC1G,CAAC,CAAC,MAAM,CAAC;gBACb,IAAI,YAAY,EAAE,aAAa,KAAK,SAAS;oBAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;gBACzH,QAAQ,GAAG,OAAO,cAAc,KAAK,QAAQ;oBACzC,CAAC,CAAC,kBAAkB,CAAC,cAAc,EAAE,OAAmB,EAAE,YAAY,CAAC;oBACvE,CAAC,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,KAAK,YAAY,iCAAiC;oBAAE,MAAM,KAAK,CAAC;gBACpE,MAAM,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrH,CAAC;YACD,MAAM,EAAE,uBAAuB,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;YAC3G,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;YAC7D,IAAI,QAAQ,KAAK,QAAQ,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;gBAChE,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC;gBAC3D,mBAAmB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,6BAA6B;gBAClE,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrE,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,+DAA+D,CAAC,CAAC;YACjI,CAAC;YACD,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE;gBAC3E,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/E,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,uCAAuC,CAAC,CAAC;gBACnI,CAAC;gBACD,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;gBACxD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;gBACnC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe;oBAC3G,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACzD,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;wBACxF,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,IAAI,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,sDAAsD,CAAC,CAAC;oBACxH,CAAC;gBACL,CAAC;gBACD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBACvD,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,6CAA6C,CAAC,CAAC;gBACrH,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC;oBACnG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;gBAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;gBAC/E,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC7G,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAChI,MAAM,cAAc,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;gBACrF,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;wBACzD,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,KAAK,EAAE,aAAa;wBACxG,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,KAAK;wBAClG,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ;wBAC/F,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,QAAQ,EAAE;wBAC7G,SAAS,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;wBACnI,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC3C,EAAE,CAAC;gBACJ,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACpF,CAAC,CAAC,CAAC;YACH,8FAA8F;YAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAClH,IAAI,CAAC,UAAU,CAAC,MAAM;gBAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC9F,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;gBACvC,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC9B,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,mBAAmB,CAAC,CAAC;gBAC7E,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAClD,wBAAwB,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EACvH,aAAa,CAAC,QAAQ,EAAE,EAAE,gBAAgB,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAClG,CAAC;YACD,OAAO,OAAO,CAAC;QACnB,CAAC;gBAAS,CAAC;YACP,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,KAAmC,OAAO,IAAI,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7H,KAAK,CAAC,qBAAqB,CAAC,MAAe,EAAE,UAAmB,EAAE,UAAmB,EAAE,QAAiB,EAAE,KAAqB;QAC3H,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QAC1F,IAAI,CAAC,oBAAoB,CAAC,+BAA+B,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7F,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC;YACpH,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC;YACtG,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC;YAClG,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,QAAQ,CAAC;YAC9F,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC;IACnG,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,QAAqB;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,kCAAkC,EAAE,QAAQ,CAAC,IAAI,EAAE,2CAA2C,CAAC,CAAC;IAC3H,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC7B,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,MAAc,EAAE,KAAoB,EAAE,UAAmB,EAAE,QAAiB,EAAE,UAAmB;QACpI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,MAAM,IAAI,CAAC,WAAW,CAAC,0CAA0C,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC;QACpI,IAAI,CAAC,kBAAkB,CAAC,yCAAyC,EAAE,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,oBAAoB,CAAC,0CAA0C,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxG,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;YACjH,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC;YACtG,CAAC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,KAAK,UAAU,CAAC;YAClG,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3I,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,QAA6B,EAAE,MAAe,EAAE,KAAqB;QAC7F,IAAI,QAAQ,CAAC,KAAK,GAAG,EAAE,IAAI,QAAQ,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC1E,MAAM,IAAI,CAAC,WAAW,CAAC,sCAAsC,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,wDAAwD,CAAC,CAAC;QACxJ,CAAC;QACD,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,kBAAkB,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC;QAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,KAAK;YAC/E,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC;YAChE,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,MAAM,KAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC;IACxH,KAAK,CAAC,oBAAoB,KAAoB,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC,CAAC,CAAC;IACpJ,KAAK,CAAC,cAAc,KAAoC,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC,CAAC,CAAC;IAElJ,SAAS,CAAC,KAAqB;QACnC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,IAAI,EAAE,4CAA4C,CAAC,CAAC;YAClH,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,oBAAoB,CAAC,SAAiB,EAAE,GAAG,OAA+B;QAC9E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC3F,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,yDAAyD,CAAC,CAAC;YACjH,CAAC;QACL,CAAC;IACL,CAAC;IAEO,oBAAoB,CAAC,OAAuB;QAChD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO;QAClC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;QACrG,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QACzG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,IAAI,OAAO,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YAC3H,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,+DAA+D,CAAC,CAAC;QACjI,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;YACtG,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,4CAA4C,CAAC,CAAC;QAC3G,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAoB,EAAE,SAAiB;QACxD,IAAI,CAAC;YACD,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,gDAAgD,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnH,CAAC;QAAC,MAAM,CAAC;YAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;QAAC,CAAC;IACzG,CAAC;IAEO,WAAW,CAAC,KAAW,EAAE,SAAiB;QAC9C,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC;YAC3H,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,sEAAsE,CAAC,CAAC;QAC7H,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,cAAc,CAAC,MAAc,EAAE,SAAiB;QACpD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,oDAAoD,CAAC,CAAC;QAC5G,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,UAAkB,EAAE,SAAiB,EACvE,cAAc,GAAG,wDAAwD;QACzE,IAAI,OAAgC,CAAC;QACrC,IAAI,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAA4B,CAAC;QAAC,CAAC;QACpE,MAAM,CAAC;YAAC,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;QAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC;QACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAW,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACjE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM;YAC9D,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI;gBACtF,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;oBACvE,CAAC,uBAAuB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpE,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9G,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAEO,mBAAmB,CAAC,OAAiC,EAAE,QAAkC;QAC7F,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QAAC,CAAC;QACpE,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,KAAK,YAAY,iCAAiC;gBAAE,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAChG,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,QAAQ,CAAC,UAAqC;QAClD,OAAO,kBAAkB,CAAC,qBAAqB,EAAE,UAAU,EAAE,EAAE,EAAE,SAAS,EACtE,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,YAAa,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5H,CAAC;IAEO,OAAO,CAAC,cAAmC,EAAE,QAAgB;QACjE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI;YAC1C,iBAAiB,EAAE,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrI,CAAC;IAEO,QAAQ,CAAC,KAAoB;QACjC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,EACrE,IAAI,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1F,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxC,OAAO;YACH,SAAS;YACT,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAA4B;YAC7E,OAAO,EAAE,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC9E,QAAQ,EAAE,QAAQ,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC;gBAC3G,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBACrJ,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;SAClE,CAAC;IACN,CAAC;IAEO,kBAAkB,CAAC,SAAiB,EAAE,MAAc;QACxD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,qEAAqE,CAAC,CAAC;QACrH,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,SAAiB,EAAE,QAAgB,EAAE,MAAc;QACnE,MAAM,KAAK,GAAG,IAAI,iCAAiC,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjF,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cratis/chronicle",
|
|
3
|
-
"version": "6.31.
|
|
3
|
+
"version": "6.31.4",
|
|
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",
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
"clean": "rm -rf dist",
|
|
169
169
|
"test": "vitest run",
|
|
170
170
|
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
171
|
-
"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",
|
|
171
|
+
"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",
|
|
172
172
|
"test:native": "node ./scripts/check-native-esm.mjs"
|
|
173
173
|
},
|
|
174
174
|
"dependencies": {
|
|
@@ -7,7 +7,7 @@ import { AppendOperationsBroadcaster } from '../eventSequences/AppendOperationsB
|
|
|
7
7
|
import { prepareBatchAppend } from '../eventSequences/prepareBatchAppend.js';
|
|
8
8
|
import { createAppendNotification, mapAppendNotificationCausation } from '../eventSequences/createAppendNotification.js';
|
|
9
9
|
import { createAppendResult } from '../eventSequences/createAppendResult.js';
|
|
10
|
-
import { Guid, type Constructor } from '@cratis/fundamentals';
|
|
10
|
+
import { conceptAsTypeKey, Guid, JsonSerializer, typeKeyOf, type Constructor } from '@cratis/fundamentals';
|
|
11
11
|
import { getEventTypeMetadata, getEventTypeFor } from '../events/eventTypeDecorator.js';
|
|
12
12
|
import { getTagsFor } from '../events/tagDecorator.js';
|
|
13
13
|
import type { AppendedEvent } from '../events/AppendedEvent.js';
|
|
@@ -35,6 +35,15 @@ import { UnsupportedEventSequenceOperation } from './UnsupportedEventSequenceOpe
|
|
|
35
35
|
// JS trim() omits U+0085, which the kernel trims. Reject unproven non-ASCII whitespace and controls.
|
|
36
36
|
const unprovenFilterCharacters = /[\u007f-\u009f]|(?=[^\x00-\x7f])\p{White_Space}/u;
|
|
37
37
|
|
|
38
|
+
function matchesConstrainedValue(value: unknown, content: unknown): boolean {
|
|
39
|
+
// Use production serialization for concepts, not their wrapper object's runtime type.
|
|
40
|
+
// Keep rejecting other unproven conversions, such as a Date assigned to a string field.
|
|
41
|
+
if (value && typeof value === 'object' && typeKeyOf(value.constructor as Constructor) === conceptAsTypeKey) {
|
|
42
|
+
return JsonSerializer.serialize(value) === JSON.stringify(content);
|
|
43
|
+
}
|
|
44
|
+
return value === content;
|
|
45
|
+
}
|
|
46
|
+
|
|
38
47
|
// Observers ReactorScenario registers to latch unsupported operations, keyed by sequence.
|
|
39
48
|
const unsupportedObservers = new WeakMap<object, (error: UnsupportedEventSequenceOperation) => void>();
|
|
40
49
|
|
|
@@ -440,7 +449,7 @@ export class InProcessEventSequence implements IEventSequence {
|
|
|
440
449
|
Object.keys(content).length !== Object.keys(properties).length ||
|
|
441
450
|
Object.entries(properties).some(([key, property]) => typeof content[key] !== property.type ||
|
|
442
451
|
(this._constraints?.isConstrainedProperty(metadata.eventType.id.value, key) &&
|
|
443
|
-
(
|
|
452
|
+
!matchesConstrainedValue(Reflect.get(event, key), content[key])) ||
|
|
444
453
|
(property.type === 'string' && !/^[\x20-\x21\x23-\x5b\x5d-\x7e\u00e9]*$/.test(content[key] as string)))) {
|
|
445
454
|
throw this.unsupported(operation, event.constructor.name, mismatchReason);
|
|
446
455
|
}
|
|
@@ -0,0 +1,178 @@
|
|
|
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 { ConceptAs, type Constructor } from '@cratis/fundamentals';
|
|
5
|
+
import { beforeEach, chai, describe, it, vi, type Assertion } from 'vitest';
|
|
6
|
+
import type { ChronicleConnection } from '../../../connection/index.js';
|
|
7
|
+
import { EventSequence } from '../../../eventSequences/EventSequence.js';
|
|
8
|
+
import { EventSequenceId } from '../../../eventSequences/EventSequenceId.js';
|
|
9
|
+
import type { AppendResult } from '../../../eventSequences/AppendResult.js';
|
|
10
|
+
import type { IUnitOfWorkManager } from '../../../transactions/IUnitOfWorkManager.js';
|
|
11
|
+
import { EventScenario, ReactorScenario, ReadModelScenario, UnsupportedEventSequenceOperation } from '../../index.js';
|
|
12
|
+
|
|
13
|
+
chai.should();
|
|
14
|
+
|
|
15
|
+
// Keep fluent should assertions typed without adding global Object declarations.
|
|
16
|
+
function should(value: unknown): Assertion {
|
|
17
|
+
return (value as { should: Assertion }).should;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
class InvalidKey extends ConceptAs<unknown> {}
|
|
21
|
+
|
|
22
|
+
export function conceptScenarioBehaviors(fixtures: {
|
|
23
|
+
eventTypes: Constructor[];
|
|
24
|
+
constraints: Constructor[];
|
|
25
|
+
registered: (name: string) => object;
|
|
26
|
+
flag: (value: boolean) => object;
|
|
27
|
+
composite: (first: string, last: string) => object;
|
|
28
|
+
model: Constructor<{ id: string; name: string }>;
|
|
29
|
+
reactor: Constructor;
|
|
30
|
+
}): void {
|
|
31
|
+
const artifacts = { eventTypes: fixtures.eventTypes, constraints: fixtures.constraints, reducers: [], projections: [] };
|
|
32
|
+
let scenario: EventScenario;
|
|
33
|
+
beforeEach(() => { scenario = new EventScenario({ artifacts }); });
|
|
34
|
+
|
|
35
|
+
describe('when appending a concept-valued unique property', () => {
|
|
36
|
+
let result: AppendResult;
|
|
37
|
+
let connectedContent: string;
|
|
38
|
+
beforeEach(async () => {
|
|
39
|
+
const append = vi.fn().mockResolvedValue({ Response: { SequenceNumber: 0n, ConstraintViolations: [], Errors: [] } });
|
|
40
|
+
const connected = new EventSequence(EventSequenceId.eventLog, 'store', 'Default',
|
|
41
|
+
{ eventSequences: { append } } as unknown as ChronicleConnection, {} as IUnitOfWorkManager);
|
|
42
|
+
const event = fixtures.registered('Ada');
|
|
43
|
+
await connected.append('author-1', event);
|
|
44
|
+
connectedContent = append.mock.calls[0][0].Content as string;
|
|
45
|
+
result = await scenario.append('author-1', event);
|
|
46
|
+
});
|
|
47
|
+
it('should accept the same event as the connected client', () => { should(result.isSuccess).be.true; });
|
|
48
|
+
it('should store the same primitive content as the connected client', () => {
|
|
49
|
+
should(scenario.appendedEvents[0].content).deep.equal(JSON.parse(connectedContent));
|
|
50
|
+
should(scenario.appendedEvents[0].content).deep.equal({ name: 'Ada' });
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
describe('when appending an empty string concept key', () => {
|
|
55
|
+
let result: AppendResult;
|
|
56
|
+
beforeEach(async () => { result = await scenario.append('author-1', fixtures.registered('')); });
|
|
57
|
+
it('should preserve the empty primitive value', () => {
|
|
58
|
+
should(result.isSuccess).be.true;
|
|
59
|
+
should(scenario.appendedEvents[0].content).deep.equal({ name: '' });
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
for (const value of [new InvalidKey(42), new InvalidKey('É'), new Date('2025-01-02T00:00:00.000Z')]) {
|
|
64
|
+
describe(`when a constrained string field contains an unsupported ${value.constructor.name} value`, () => {
|
|
65
|
+
let error: unknown;
|
|
66
|
+
beforeEach(async () => {
|
|
67
|
+
const event = fixtures.registered('Ada');
|
|
68
|
+
Object.assign(event, { name: value });
|
|
69
|
+
error = await scenario.append('author-1', event).then(() => undefined, reason => reason);
|
|
70
|
+
});
|
|
71
|
+
it('should reject before changing scenario state', () => {
|
|
72
|
+
should(error instanceof UnsupportedEventSequenceOperation).be.true;
|
|
73
|
+
should(scenario.appendedEvents).have.lengthOf(0);
|
|
74
|
+
should(scenario.results).have.lengthOf(0);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
describe('when claiming a seeded concept key from another source', () => {
|
|
80
|
+
let result: AppendResult;
|
|
81
|
+
beforeEach(async () => {
|
|
82
|
+
await scenario.given.forEventSource('author-1').events(fixtures.registered('Ada'));
|
|
83
|
+
result = await scenario.append('author-2', fixtures.registered('Ada'));
|
|
84
|
+
});
|
|
85
|
+
it('should reject the duplicate primitive key', () => {
|
|
86
|
+
should(result.isSuccess).be.false;
|
|
87
|
+
should(result.constraintViolations[0].details).deep.equal({ PropertyName: 'name', PropertyValue: 'Ada' });
|
|
88
|
+
});
|
|
89
|
+
it('should preserve the seeded history', () => { should(scenario.appendedEvents).have.lengthOf(1); });
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
for (const mixed of [false, true]) {
|
|
93
|
+
describe(`when appending concept fields in a ${mixed ? 'mixed-source' : 'single-source'} batch`, () => {
|
|
94
|
+
let results: AppendResult[];
|
|
95
|
+
beforeEach(async () => {
|
|
96
|
+
const events = [fixtures.registered('Ada'), fixtures.registered('Grace')];
|
|
97
|
+
results = mixed
|
|
98
|
+
? await scenario.appendMany(events.map((event, index) => ({ eventSourceId: `author-${index}`, event })))
|
|
99
|
+
: await scenario.appendMany('author-1', events);
|
|
100
|
+
});
|
|
101
|
+
it('should accept both serialized concept values', () => {
|
|
102
|
+
should(results.map(result => result.isSuccess)).deep.equal([true, true]);
|
|
103
|
+
should(scenario.appendedEvents.map(event => event.content)).deep.equal([{ name: 'Ada' }, { name: 'Grace' }]);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
describe('when a batch claims the same concept key twice', () => {
|
|
109
|
+
let results: AppendResult[];
|
|
110
|
+
beforeEach(async () => {
|
|
111
|
+
results = await scenario.appendMany([
|
|
112
|
+
{ eventSourceId: 'author-1', event: fixtures.registered('Ada') },
|
|
113
|
+
{ eventSourceId: 'author-2', event: fixtures.registered('Ada') }
|
|
114
|
+
]);
|
|
115
|
+
});
|
|
116
|
+
it('should reject the entire batch without committing events', () => {
|
|
117
|
+
should(results.map(result => result.isSuccess)).deep.equal([false, false]);
|
|
118
|
+
should(scenario.appendedEvents).have.lengthOf(0);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
for (const value of [false, true]) {
|
|
123
|
+
describe(`when claiming the boolean concept key ${value} twice`, () => {
|
|
124
|
+
let accepted: AppendResult;
|
|
125
|
+
let duplicate: AppendResult;
|
|
126
|
+
beforeEach(async () => {
|
|
127
|
+
accepted = await scenario.append('flag-1', fixtures.flag(value));
|
|
128
|
+
duplicate = await scenario.append('flag-2', fixtures.flag(value));
|
|
129
|
+
});
|
|
130
|
+
it('should accept and serialize the boolean concept', () => {
|
|
131
|
+
should(accepted.isSuccess).be.true;
|
|
132
|
+
should(scenario.appendedEvents[0].content).deep.equal({ active: value });
|
|
133
|
+
});
|
|
134
|
+
it('should report the duplicate boolean key', () => {
|
|
135
|
+
should(duplicate.isSuccess).be.false;
|
|
136
|
+
should(duplicate.constraintViolations[0].details).deep.equal({ PropertyName: 'active', PropertyValue: value ? 'True' : 'False' });
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
describe('when a composite concept key differs only in casing', () => {
|
|
142
|
+
let duplicate: AppendResult;
|
|
143
|
+
beforeEach(async () => {
|
|
144
|
+
await scenario.append('name-1', fixtures.composite('Ada', 'Lovelace'));
|
|
145
|
+
duplicate = await scenario.append('name-2', fixtures.composite('ADA', 'LOVELACE'));
|
|
146
|
+
});
|
|
147
|
+
it('should compare serialized components and retain original values in violations', () => {
|
|
148
|
+
should(duplicate.isSuccess).be.false;
|
|
149
|
+
should(duplicate.constraintViolations.map(violation => violation.details.PropertyValue)).deep.equal(['ADA', 'LOVELACE']);
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
describe('when observing accepted concept fields in a read model', () => {
|
|
154
|
+
let name: string;
|
|
155
|
+
beforeEach(async () => {
|
|
156
|
+
const models = new ReadModelScenario(fixtures.model, artifacts).observe(scenario);
|
|
157
|
+
await scenario.append('author-1', fixtures.registered('Ada'));
|
|
158
|
+
name = (await models.instanceForEventSourceId('author-1'))!.name;
|
|
159
|
+
});
|
|
160
|
+
it('should project the serialized primitive', () => { should(name).equal('Ada'); });
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
describe('when delivering concept fields through a reactor and observing its explicit append', () => {
|
|
164
|
+
let reactorScenario: ReactorScenario;
|
|
165
|
+
let name: string;
|
|
166
|
+
beforeEach(async () => {
|
|
167
|
+
reactorScenario = new ReactorScenario(fixtures.reactor, { artifacts });
|
|
168
|
+
const models = new ReadModelScenario(fixtures.model, artifacts).observe(reactorScenario);
|
|
169
|
+
await reactorScenario.when.forEventSource('author-1').events(fixtures.registered('Ada'));
|
|
170
|
+
name = (await models.instanceForEventSourceId('author-1'))!.name;
|
|
171
|
+
});
|
|
172
|
+
it('should complete the delivery and explicit concept append', () => {
|
|
173
|
+
should(reactorScenario.results[0].completed).be.true;
|
|
174
|
+
should(reactorScenario.appendedEvents.map(event => event.content)).deep.equal([{ name: 'Ada' }, { name: 'Ada' }]);
|
|
175
|
+
});
|
|
176
|
+
it('should expose the serialized primitive to the observing read model', () => { should(name).equal('Ada'); });
|
|
177
|
+
});
|
|
178
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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 { ConceptAs, field } from '@cratis/fundamentals';
|
|
5
|
+
import { describe } from 'vitest';
|
|
6
|
+
import { eventType } from '../../../events/eventTypeDecorator.js';
|
|
7
|
+
import { unique } from '../../../events/constraints/unique.js';
|
|
8
|
+
import { constraint } from '../../../events/constraints/constraint.js';
|
|
9
|
+
import type { IConstraintBuilder } from '../../../events/constraints/IConstraintBuilder.js';
|
|
10
|
+
import { fromEvent } from '../../../projections/modelBound/fromEvent.js';
|
|
11
|
+
import { reactor } from '../../../reactors/reactor.js';
|
|
12
|
+
import type { ReactorServices } from '../../../reactors/ReactorServices.js';
|
|
13
|
+
import { conceptScenarioBehaviors } from './concept_scenario_behaviors.fixture.js';
|
|
14
|
+
|
|
15
|
+
class AuthorName extends ConceptAs<string> { static readonly valueType = String; }
|
|
16
|
+
class Active extends ConceptAs<boolean> { static readonly valueType = Boolean; }
|
|
17
|
+
|
|
18
|
+
@eventType('concept-legacy-registered')
|
|
19
|
+
class AuthorRegistered {
|
|
20
|
+
@field(AuthorName) @unique('concept-legacy-name') name: AuthorName;
|
|
21
|
+
constructor(name: string) { this.name = new AuthorName(name); }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@eventType('concept-legacy-flag')
|
|
25
|
+
class FlagRecorded {
|
|
26
|
+
@field(Active) @unique('concept-legacy-active') active: Active;
|
|
27
|
+
constructor(active: boolean) { this.active = new Active(active); }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@eventType('concept-legacy-composite')
|
|
31
|
+
class FullNameRegistered {
|
|
32
|
+
@field(AuthorName) first: AuthorName;
|
|
33
|
+
@field(AuthorName) last: AuthorName;
|
|
34
|
+
constructor(first: string, last: string) { this.first = new AuthorName(first); this.last = new AuthorName(last); }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@constraint('concept-legacy-full-name')
|
|
38
|
+
class FullName {
|
|
39
|
+
define(builder: IConstraintBuilder) {
|
|
40
|
+
builder.unique(key => key.on(FullNameRegistered, event => event.first, event => event.last).ignoreCasing());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@eventType('concept-legacy-welcomed')
|
|
45
|
+
class AuthorWelcomed {
|
|
46
|
+
@field(AuthorName) @unique('concept-legacy-welcome') name: AuthorName;
|
|
47
|
+
constructor(name: string) { this.name = new AuthorName(name); }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@fromEvent(AuthorWelcomed)
|
|
51
|
+
@fromEvent(AuthorRegistered)
|
|
52
|
+
class Author {
|
|
53
|
+
@field(String) id = '';
|
|
54
|
+
@field(String) name = '';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@reactor('concept-legacy-welcomer')
|
|
58
|
+
class Welcomer {
|
|
59
|
+
async authorRegistered(event: AuthorRegistered, context: { eventSourceId: string }, services: ReactorServices) {
|
|
60
|
+
await services.eventStore.eventLog.append(context.eventSourceId, new AuthorWelcomed(String(event.name)));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
describe('when appending concept fields with legacy decorators', () => {
|
|
65
|
+
conceptScenarioBehaviors({
|
|
66
|
+
eventTypes: [AuthorRegistered, FlagRecorded, FullNameRegistered, AuthorWelcomed],
|
|
67
|
+
constraints: [FullName],
|
|
68
|
+
registered: name => new AuthorRegistered(name),
|
|
69
|
+
flag: value => new FlagRecorded(value),
|
|
70
|
+
composite: (first, last) => new FullNameRegistered(first, last),
|
|
71
|
+
model: Author,
|
|
72
|
+
reactor: Welcomer
|
|
73
|
+
});
|
|
74
|
+
});
|
|
@@ -0,0 +1,74 @@
|
|
|
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 { ConceptAs, field } from '@cratis/fundamentals';
|
|
5
|
+
import { describe } from 'vitest';
|
|
6
|
+
import { eventType } from '../../../events/eventTypeDecorator.js';
|
|
7
|
+
import { unique } from '../../../events/constraints/unique.js';
|
|
8
|
+
import { constraint } from '../../../events/constraints/constraint.js';
|
|
9
|
+
import type { IConstraintBuilder } from '../../../events/constraints/IConstraintBuilder.js';
|
|
10
|
+
import { fromEvent } from '../../../projections/modelBound/fromEvent.js';
|
|
11
|
+
import { reactor } from '../../../reactors/reactor.js';
|
|
12
|
+
import type { ReactorServices } from '../../../reactors/ReactorServices.js';
|
|
13
|
+
import { conceptScenarioBehaviors } from './concept_scenario_behaviors.fixture.js';
|
|
14
|
+
|
|
15
|
+
class AuthorName extends ConceptAs<string> { static readonly valueType = String; }
|
|
16
|
+
class Active extends ConceptAs<boolean> { static readonly valueType = Boolean; }
|
|
17
|
+
|
|
18
|
+
@eventType('concept-standard-registered')
|
|
19
|
+
class AuthorRegistered {
|
|
20
|
+
@field(AuthorName) @unique('concept-standard-name') name: AuthorName;
|
|
21
|
+
constructor(name: string) { this.name = new AuthorName(name); }
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@eventType('concept-standard-flag')
|
|
25
|
+
class FlagRecorded {
|
|
26
|
+
@field(Active) @unique('concept-standard-active') active: Active;
|
|
27
|
+
constructor(active: boolean) { this.active = new Active(active); }
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
@eventType('concept-standard-composite')
|
|
31
|
+
class FullNameRegistered {
|
|
32
|
+
@field(AuthorName) first: AuthorName;
|
|
33
|
+
@field(AuthorName) last: AuthorName;
|
|
34
|
+
constructor(first: string, last: string) { this.first = new AuthorName(first); this.last = new AuthorName(last); }
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
@constraint('concept-standard-full-name')
|
|
38
|
+
class FullName {
|
|
39
|
+
define(builder: IConstraintBuilder) {
|
|
40
|
+
builder.unique(key => key.on(FullNameRegistered, event => event.first, event => event.last).ignoreCasing());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@eventType('concept-standard-welcomed')
|
|
45
|
+
class AuthorWelcomed {
|
|
46
|
+
@field(AuthorName) @unique('concept-standard-welcome') name: AuthorName;
|
|
47
|
+
constructor(name: string) { this.name = new AuthorName(name); }
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@fromEvent(AuthorWelcomed)
|
|
51
|
+
@fromEvent(AuthorRegistered)
|
|
52
|
+
class Author {
|
|
53
|
+
@field(String) id = '';
|
|
54
|
+
@field(String) name = '';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@reactor('concept-standard-welcomer')
|
|
58
|
+
class Welcomer {
|
|
59
|
+
async authorRegistered(event: AuthorRegistered, context: { eventSourceId: string }, services: ReactorServices) {
|
|
60
|
+
await services.eventStore.eventLog.append(context.eventSourceId, new AuthorWelcomed(String(event.name)));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
describe('when appending concept fields with standard decorators', () => {
|
|
65
|
+
conceptScenarioBehaviors({
|
|
66
|
+
eventTypes: [AuthorRegistered, FlagRecorded, FullNameRegistered, AuthorWelcomed],
|
|
67
|
+
constraints: [FullName],
|
|
68
|
+
registered: name => new AuthorRegistered(name),
|
|
69
|
+
flag: value => new FlagRecorded(value),
|
|
70
|
+
composite: (first, last) => new FullNameRegistered(first, last),
|
|
71
|
+
model: Author,
|
|
72
|
+
reactor: Welcomer
|
|
73
|
+
});
|
|
74
|
+
});
|