@cratis/chronicle 0.0.1 → 0.1.0

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 (157) hide show
  1. package/Auditing/Causation.ts +29 -0
  2. package/Auditing/CausationManager.ts +51 -0
  3. package/Auditing/CausationType.ts +38 -0
  4. package/Auditing/ICausationManager.ts +29 -0
  5. package/Auditing/index.ts +15 -0
  6. package/Correlation/CorrelationId.ts +33 -0
  7. package/Correlation/CorrelationIdManager.ts +30 -0
  8. package/Correlation/ICorrelationIdAccessor.ts +15 -0
  9. package/Correlation/ICorrelationIdSetter.ts +21 -0
  10. package/Correlation/index.ts +15 -0
  11. package/EventSequences/EventSequence.ts +48 -50
  12. package/Identity/IIdentityProvider.ts +26 -0
  13. package/Identity/Identity.ts +61 -0
  14. package/Identity/IdentityProvider.ts +28 -0
  15. package/Identity/index.ts +14 -0
  16. package/Projections/Projections.ts +75 -20
  17. package/Projections/declarative/ProjectionBuilderFor.ts +19 -2
  18. package/Projections/declarative/projection.ts +6 -2
  19. package/Projections/modelBound/index.ts +0 -2
  20. package/Projections/modelBound/setFromContext.ts +20 -2
  21. package/README.md +1 -1
  22. package/Reactors/Reactors.ts +1 -0
  23. package/Reducers/Reducers.ts +66 -2
  24. package/Schemas/JsonSchemaGenerator.ts +20 -3
  25. package/artifacts/DefaultClientArtifactsProvider.ts +0 -5
  26. package/artifacts/IClientArtifactsProvider.ts +0 -3
  27. package/connection/Guid.ts +29 -1
  28. package/dist/Auditing/Causation.d.ts +22 -0
  29. package/dist/Auditing/Causation.d.ts.map +1 -0
  30. package/dist/Auditing/Causation.js +30 -0
  31. package/dist/Auditing/Causation.js.map +1 -0
  32. package/dist/Auditing/CausationManager.d.ts +23 -0
  33. package/dist/Auditing/CausationManager.d.ts.map +1 -0
  34. package/dist/Auditing/CausationManager.js +45 -0
  35. package/dist/Auditing/CausationManager.js.map +1 -0
  36. package/dist/Auditing/CausationType.d.ts +30 -0
  37. package/dist/Auditing/CausationType.d.ts.map +1 -0
  38. package/dist/Auditing/CausationType.js +36 -0
  39. package/dist/Auditing/CausationType.js.map +1 -0
  40. package/dist/Auditing/ICausationManager.d.ts +24 -0
  41. package/dist/Auditing/ICausationManager.d.ts.map +1 -0
  42. package/dist/Auditing/ICausationManager.js +4 -0
  43. package/dist/Auditing/ICausationManager.js.map +1 -0
  44. package/dist/Auditing/index.d.ts +11 -0
  45. package/dist/Auditing/index.d.ts.map +1 -0
  46. package/dist/Auditing/index.js +12 -0
  47. package/dist/Auditing/index.js.map +1 -0
  48. package/dist/Correlation/CorrelationId.d.ts +23 -0
  49. package/dist/Correlation/CorrelationId.d.ts.map +1 -0
  50. package/dist/Correlation/CorrelationId.js +32 -0
  51. package/dist/Correlation/CorrelationId.js.map +1 -0
  52. package/dist/Correlation/CorrelationIdManager.d.ts +17 -0
  53. package/dist/Correlation/CorrelationIdManager.d.ts.map +1 -0
  54. package/dist/Correlation/CorrelationIdManager.js +24 -0
  55. package/dist/Correlation/CorrelationIdManager.js.map +1 -0
  56. package/dist/Correlation/ICorrelationIdAccessor.d.ts +12 -0
  57. package/dist/Correlation/ICorrelationIdAccessor.d.ts.map +1 -0
  58. package/dist/Correlation/ICorrelationIdAccessor.js +4 -0
  59. package/dist/Correlation/ICorrelationIdAccessor.js.map +1 -0
  60. package/dist/Correlation/ICorrelationIdSetter.d.ts +17 -0
  61. package/dist/Correlation/ICorrelationIdSetter.d.ts.map +1 -0
  62. package/dist/Correlation/ICorrelationIdSetter.js +4 -0
  63. package/dist/Correlation/ICorrelationIdSetter.js.map +1 -0
  64. package/dist/Correlation/index.d.ts +11 -0
  65. package/dist/Correlation/index.d.ts.map +1 -0
  66. package/dist/Correlation/index.js +11 -0
  67. package/dist/Correlation/index.js.map +1 -0
  68. package/dist/EventSequences/EventSequence.d.ts.map +1 -1
  69. package/dist/EventSequences/EventSequence.js +45 -46
  70. package/dist/EventSequences/EventSequence.js.map +1 -1
  71. package/dist/Identity/IIdentityProvider.d.ts +21 -0
  72. package/dist/Identity/IIdentityProvider.d.ts.map +1 -0
  73. package/dist/Identity/IIdentityProvider.js +4 -0
  74. package/dist/Identity/IIdentityProvider.js.map +1 -0
  75. package/dist/Identity/Identity.d.ts +37 -0
  76. package/dist/Identity/Identity.d.ts.map +1 -0
  77. package/dist/Identity/Identity.js +60 -0
  78. package/dist/Identity/Identity.js.map +1 -0
  79. package/dist/Identity/IdentityProvider.d.ts +15 -0
  80. package/dist/Identity/IdentityProvider.d.ts.map +1 -0
  81. package/dist/Identity/IdentityProvider.js +23 -0
  82. package/dist/Identity/IdentityProvider.js.map +1 -0
  83. package/dist/Identity/index.d.ts +10 -0
  84. package/dist/Identity/index.d.ts.map +1 -0
  85. package/dist/Identity/index.js +11 -0
  86. package/dist/Identity/index.js.map +1 -0
  87. package/dist/Projections/Projections.d.ts +9 -1
  88. package/dist/Projections/Projections.d.ts.map +1 -1
  89. package/dist/Projections/Projections.js +70 -19
  90. package/dist/Projections/Projections.js.map +1 -1
  91. package/dist/Projections/declarative/ProjectionBuilderFor.d.ts +6 -0
  92. package/dist/Projections/declarative/ProjectionBuilderFor.d.ts.map +1 -1
  93. package/dist/Projections/declarative/ProjectionBuilderFor.js +18 -2
  94. package/dist/Projections/declarative/ProjectionBuilderFor.js.map +1 -1
  95. package/dist/Projections/declarative/projection.d.ts +5 -1
  96. package/dist/Projections/declarative/projection.d.ts.map +1 -1
  97. package/dist/Projections/declarative/projection.js +3 -2
  98. package/dist/Projections/declarative/projection.js.map +1 -1
  99. package/dist/Projections/modelBound/index.d.ts +0 -2
  100. package/dist/Projections/modelBound/index.d.ts.map +1 -1
  101. package/dist/Projections/modelBound/index.js +0 -1
  102. package/dist/Projections/modelBound/index.js.map +1 -1
  103. package/dist/Projections/modelBound/setFromContext.d.ts +4 -1
  104. package/dist/Projections/modelBound/setFromContext.d.ts.map +1 -1
  105. package/dist/Projections/modelBound/setFromContext.js +12 -7
  106. package/dist/Projections/modelBound/setFromContext.js.map +1 -1
  107. package/dist/Reactors/Reactors.d.ts.map +1 -1
  108. package/dist/Reactors/Reactors.js +1 -0
  109. package/dist/Reactors/Reactors.js.map +1 -1
  110. package/dist/Reducers/Reducers.d.ts +2 -0
  111. package/dist/Reducers/Reducers.d.ts.map +1 -1
  112. package/dist/Reducers/Reducers.js +60 -2
  113. package/dist/Reducers/Reducers.js.map +1 -1
  114. package/dist/Schemas/JsonSchemaGenerator.d.ts.map +1 -1
  115. package/dist/Schemas/JsonSchemaGenerator.js +17 -3
  116. package/dist/Schemas/JsonSchemaGenerator.js.map +1 -1
  117. package/dist/artifacts/DefaultClientArtifactsProvider.d.ts +0 -2
  118. package/dist/artifacts/DefaultClientArtifactsProvider.d.ts.map +1 -1
  119. package/dist/artifacts/DefaultClientArtifactsProvider.js +0 -4
  120. package/dist/artifacts/DefaultClientArtifactsProvider.js.map +1 -1
  121. package/dist/artifacts/IClientArtifactsProvider.d.ts +0 -2
  122. package/dist/artifacts/IClientArtifactsProvider.d.ts.map +1 -1
  123. package/dist/connection/Guid.d.ts +8 -1
  124. package/dist/connection/Guid.d.ts.map +1 -1
  125. package/dist/connection/Guid.js +24 -1
  126. package/dist/connection/Guid.js.map +1 -1
  127. package/dist/index.d.ts +4 -0
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +4 -0
  130. package/dist/index.js.map +1 -1
  131. package/dist/sinks/WellKnownSinks.d.ts +15 -0
  132. package/dist/sinks/WellKnownSinks.d.ts.map +1 -0
  133. package/dist/sinks/WellKnownSinks.js +17 -0
  134. package/dist/sinks/WellKnownSinks.js.map +1 -0
  135. package/dist/sinks/index.d.ts +2 -0
  136. package/dist/sinks/index.d.ts.map +1 -0
  137. package/dist/sinks/index.js +4 -0
  138. package/dist/sinks/index.js.map +1 -0
  139. package/dist/tsconfig.tsbuildinfo +1 -1
  140. package/dist/types/DecoratorType.d.ts +1 -3
  141. package/dist/types/DecoratorType.d.ts.map +1 -1
  142. package/dist/types/DecoratorType.js +0 -2
  143. package/dist/types/DecoratorType.js.map +1 -1
  144. package/index.ts +4 -0
  145. package/package.json +2 -2
  146. package/sinks/WellKnownSinks.ts +21 -0
  147. package/sinks/index.ts +4 -0
  148. package/types/DecoratorType.ts +1 -4
  149. package/Projections/modelBound/modelBound.ts +0 -59
  150. package/dist/Grpc.d.ts +0 -19
  151. package/dist/Grpc.d.ts.map +0 -1
  152. package/dist/Grpc.js +0 -33
  153. package/dist/Grpc.js.map +0 -1
  154. package/dist/Projections/modelBound/modelBound.d.ts +0 -31
  155. package/dist/Projections/modelBound/modelBound.d.ts.map +0 -1
  156. package/dist/Projections/modelBound/modelBound.js +0 -39
  157. package/dist/Projections/modelBound/modelBound.js.map +0 -1
@@ -0,0 +1,21 @@
1
+ import { Identity } from './Identity';
2
+ /**
3
+ * Defines a system that can provide and manage the current {@link Identity} for the active call context.
4
+ */
5
+ export interface IIdentityProvider {
6
+ /**
7
+ * Gets the current identity for the active call context.
8
+ * @returns The current {@link Identity}, or {@link Identity.system} if none has been set.
9
+ */
10
+ getCurrent(): Identity;
11
+ /**
12
+ * Sets the current identity for the active call context.
13
+ * @param identity - The {@link Identity} to set.
14
+ */
15
+ setCurrentIdentity(identity: Identity): void;
16
+ /**
17
+ * Clears the current identity for the active call context, resetting it to {@link Identity.system}.
18
+ */
19
+ clearCurrentIdentity(): void;
20
+ }
21
+ //# sourceMappingURL=IIdentityProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IIdentityProvider.d.ts","sourceRoot":"","sources":["../../Identity/IIdentityProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;;OAGG;IACH,UAAU,IAAI,QAAQ,CAAC;IAEvB;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAE7C;;OAEG;IACH,oBAAoB,IAAI,IAAI,CAAC;CAChC"}
@@ -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=IIdentityProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IIdentityProvider.js","sourceRoot":"","sources":["../../Identity/IIdentityProvider.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Represents an identity of something that is responsible for causing a state change.
3
+ * An identity can be a user, a system, a service or anything else that can be identified.
4
+ */
5
+ export declare class Identity {
6
+ readonly subject: string;
7
+ readonly name: string;
8
+ readonly userName: string;
9
+ readonly onBehalfOf?: Identity | undefined;
10
+ /**
11
+ * The identity used when not set.
12
+ */
13
+ static readonly notSet: Identity;
14
+ /**
15
+ * The identity used when the identity is not known.
16
+ */
17
+ static readonly unknown: Identity;
18
+ /**
19
+ * The identity used when the system is the cause.
20
+ */
21
+ static readonly system: Identity;
22
+ /**
23
+ * Initializes a new instance of the {@link Identity} class.
24
+ * @param subject - The identifier of the identity, referred to as subject.
25
+ * @param name - Name of the identity.
26
+ * @param userName - Optional username, defaults to empty string.
27
+ * @param onBehalfOf - Optional behalf of {@link Identity}.
28
+ */
29
+ constructor(subject: string, name: string, userName?: string, onBehalfOf?: Identity | undefined);
30
+ /**
31
+ * Returns a new {@link Identity} chain with duplicate subjects removed.
32
+ * The first occurrence of each subject is kept.
33
+ * @returns A new {@link Identity} with duplicates removed from the chain.
34
+ */
35
+ withoutDuplicates(): Identity;
36
+ }
37
+ //# sourceMappingURL=Identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Identity.d.ts","sourceRoot":"","sources":["../../Identity/Identity.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,QAAQ;IAwBb,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ;IA1BlC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAkF;IAExG;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,WAAkF;IAEzG;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,WAAgF;IAEtG;;;;;;OAMG;gBAEU,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAW,EACrB,UAAU,CAAC,EAAE,QAAQ,YAAA;IAGlC;;;;OAIG;IACH,iBAAiB,IAAI,QAAQ;CAkBhC"}
@@ -0,0 +1,60 @@
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
+ * Represents an identity of something that is responsible for causing a state change.
5
+ * An identity can be a user, a system, a service or anything else that can be identified.
6
+ */
7
+ export class Identity {
8
+ subject;
9
+ name;
10
+ userName;
11
+ onBehalfOf;
12
+ /**
13
+ * The identity used when not set.
14
+ */
15
+ static notSet = new Identity('1efc9b81-0612-4466-962c-86acc4e9a028', '[Not Set]', '[Not Set]');
16
+ /**
17
+ * The identity used when the identity is not known.
18
+ */
19
+ static unknown = new Identity('3321cf62-db16-425e-8173-99fcfefe11dd', '[Unknown]', '[Unknown]');
20
+ /**
21
+ * The identity used when the system is the cause.
22
+ */
23
+ static system = new Identity('5d032c92-9d5e-41eb-947a-ee5314ed0032', '[System]', '[System]');
24
+ /**
25
+ * Initializes a new instance of the {@link Identity} class.
26
+ * @param subject - The identifier of the identity, referred to as subject.
27
+ * @param name - Name of the identity.
28
+ * @param userName - Optional username, defaults to empty string.
29
+ * @param onBehalfOf - Optional behalf of {@link Identity}.
30
+ */
31
+ constructor(subject, name, userName = '', onBehalfOf) {
32
+ this.subject = subject;
33
+ this.name = name;
34
+ this.userName = userName;
35
+ this.onBehalfOf = onBehalfOf;
36
+ }
37
+ /**
38
+ * Returns a new {@link Identity} chain with duplicate subjects removed.
39
+ * The first occurrence of each subject is kept.
40
+ * @returns A new {@link Identity} with duplicates removed from the chain.
41
+ */
42
+ withoutDuplicates() {
43
+ const seen = new Set();
44
+ const chain = [];
45
+ let current = this;
46
+ while (current !== undefined) {
47
+ if (!seen.has(current.subject)) {
48
+ seen.add(current.subject);
49
+ chain.push(current);
50
+ }
51
+ current = current.onBehalfOf;
52
+ }
53
+ let result;
54
+ for (let i = chain.length - 1; i >= 0; i--) {
55
+ result = new Identity(chain[i].subject, chain[i].name, chain[i].userName, result);
56
+ }
57
+ return result;
58
+ }
59
+ }
60
+ //# sourceMappingURL=Identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Identity.js","sourceRoot":"","sources":["../../Identity/Identity.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG;;;GAGG;AACH,MAAM,OAAO,QAAQ;IAwBJ;IACA;IACA;IACA;IA1Bb;;OAEG;IACH,MAAM,CAAU,MAAM,GAAG,IAAI,QAAQ,CAAC,sCAAsC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAExG;;OAEG;IACH,MAAM,CAAU,OAAO,GAAG,IAAI,QAAQ,CAAC,sCAAsC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAEzG;;OAEG;IACH,MAAM,CAAU,MAAM,GAAG,IAAI,QAAQ,CAAC,sCAAsC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEtG;;;;;;OAMG;IACH,YACa,OAAe,EACf,IAAY,EACZ,WAAmB,EAAE,EACrB,UAAqB;QAHrB,YAAO,GAAP,OAAO,CAAQ;QACf,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAAa;QACrB,eAAU,GAAV,UAAU,CAAW;IAC/B,CAAC;IAEJ;;;;OAIG;IACH,iBAAiB;QACb,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAyB,IAAI,CAAC;QACzC,OAAO,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;QACjC,CAAC;QAED,IAAI,MAA4B,CAAC;QACjC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,MAAO,CAAC;IACnB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Identity } from './Identity';
2
+ import { IIdentityProvider } from './IIdentityProvider';
3
+ /**
4
+ * Implements {@link IIdentityProvider} using {@link AsyncLocalStorage} to scope the identity to the active async call context.
5
+ */
6
+ export declare class IdentityProvider implements IIdentityProvider {
7
+ private readonly _storage;
8
+ /** @inheritdoc */
9
+ getCurrent(): Identity;
10
+ /** @inheritdoc */
11
+ setCurrentIdentity(identity: Identity): void;
12
+ /** @inheritdoc */
13
+ clearCurrentIdentity(): void;
14
+ }
15
+ //# sourceMappingURL=IdentityProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityProvider.d.ts","sourceRoot":"","sources":["../../Identity/IdentityProvider.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAE9D,kBAAkB;IAClB,UAAU,IAAI,QAAQ;IAItB,kBAAkB;IAClB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI5C,kBAAkB;IAClB,oBAAoB,IAAI,IAAI;CAG/B"}
@@ -0,0 +1,23 @@
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 { AsyncLocalStorage } from 'async_hooks';
4
+ import { Identity } from './Identity';
5
+ /**
6
+ * Implements {@link IIdentityProvider} using {@link AsyncLocalStorage} to scope the identity to the active async call context.
7
+ */
8
+ export class IdentityProvider {
9
+ _storage = new AsyncLocalStorage();
10
+ /** @inheritdoc */
11
+ getCurrent() {
12
+ return this._storage.getStore() ?? Identity.system;
13
+ }
14
+ /** @inheritdoc */
15
+ setCurrentIdentity(identity) {
16
+ this._storage.enterWith(identity);
17
+ }
18
+ /** @inheritdoc */
19
+ clearCurrentIdentity() {
20
+ this._storage.enterWith(Identity.system);
21
+ }
22
+ }
23
+ //# sourceMappingURL=IdentityProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdentityProvider.js","sourceRoot":"","sources":["../../Identity/IdentityProvider.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACR,QAAQ,GAAG,IAAI,iBAAiB,EAAY,CAAC;IAE9D,kBAAkB;IAClB,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC;IACvD,CAAC;IAED,kBAAkB;IAClB,kBAAkB,CAAC,QAAkB;QACjC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,kBAAkB;IAClB,oBAAoB;QAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;CACJ"}
@@ -0,0 +1,10 @@
1
+ export { Identity } from './Identity';
2
+ export type { IIdentityProvider } from './IIdentityProvider';
3
+ export { IdentityProvider } from './IdentityProvider';
4
+ import { IdentityProvider } from './IdentityProvider';
5
+ /**
6
+ * The default singleton {@link IdentityProvider} for the process.
7
+ * Use this to get and set the identity for the current async call context.
8
+ */
9
+ export declare const identityProvider: IdentityProvider;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../Identity/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -0,0 +1,11 @@
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 { Identity } from './Identity';
4
+ export { IdentityProvider } from './IdentityProvider';
5
+ import { IdentityProvider } from './IdentityProvider';
6
+ /**
7
+ * The default singleton {@link IdentityProvider} for the process.
8
+ * Use this to get and set the identity for the current async call context.
9
+ */
10
+ export const identityProvider = new IdentityProvider();
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../Identity/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
@@ -11,6 +11,7 @@ export declare class Projections implements IProjections {
11
11
  private readonly _clientArtifacts;
12
12
  private readonly _declarative;
13
13
  private readonly _modelBound;
14
+ private readonly _logger;
14
15
  /**
15
16
  * Creates a new {@link Projections} instance.
16
17
  * @param _clientArtifacts - Provider for discovered client artifact types.
@@ -20,6 +21,7 @@ export declare class Projections implements IProjections {
20
21
  discover(): Promise<void>;
21
22
  /** @inheritdoc */
22
23
  register(): Promise<void>;
24
+ private registerWithRetry;
23
25
  private buildReadModelDefinitions;
24
26
  private getReadModelSchema;
25
27
  private buildDeclarativeDefinition;
@@ -31,6 +33,12 @@ export declare class Projections implements IProjections {
31
33
  private ensureJoinEntry;
32
34
  private toContractEventType;
33
35
  private getEventTypeMapKey;
34
- private toContractsGuid;
36
+ /**
37
+ * Computes a stable, deterministic ISO timestamp from the projection definition content,
38
+ * excluding the LastUpdated field itself. This ensures the server does not interpret
39
+ * a repeated registration of an unchanged definition as a definition change, which
40
+ * would otherwise trigger an unnecessary auto-replay.
41
+ */
42
+ private computeStableLastUpdated;
35
43
  }
36
44
  //# sourceMappingURL=Projections.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Projections.d.ts","sourceRoot":"","sources":["../../Projections/Projections.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAKpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+B9C;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IASxC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAVrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAE9D;;;OAGG;gBAEkB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,wBAAwB;IAG/D,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B/B,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC/B,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,yBAAyB;IAqIjC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,sCAAsC;IA2B9C,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,eAAe;CAO1B"}
1
+ {"version":3,"file":"Projections.d.ts","sourceRoot":"","sources":["../../Projections/Projections.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAOpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+B9C;;;GAGG;AACH,qBAAa,WAAY,YAAW,YAAY;IAWxC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAZrC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;IAE9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8E;IAEtG;;;OAGG;gBAEkB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAChC,gBAAgB,EAAE,wBAAwB;IAG/D,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC/B,kBAAkB;IACZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCjB,iBAAiB;IA8B/B,OAAO,CAAC,yBAAyB;IAgCjC,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,0BAA0B;IA6BlC,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,yBAAyB;IAsIjC,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,sCAAsC;IA2B9C,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAI1B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;CASnC"}
@@ -1,9 +1,12 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+ import { diag } from '@opentelemetry/api';
3
4
  import { AutoMap, ProjectionOwner } from '@cratis/chronicle.contracts';
5
+ import { toContractsGuid } from '../connection/Guid';
4
6
  import { EventSequenceId } from '../EventSequences/EventSequenceId';
5
7
  import { getEventTypeFor } from '../Events/eventTypeDecorator';
6
8
  import { getReadModelMetadata } from '../ReadModels';
9
+ import { WellKnownSinks } from '../sinks';
7
10
  import { TypeIntrospector } from '../types';
8
11
  import { getProjectionMetadata } from './declarative/projection';
9
12
  import { ProjectionBuilderFor } from './declarative/ProjectionBuilderFor';
@@ -35,6 +38,7 @@ export class Projections {
35
38
  _clientArtifacts;
36
39
  _declarative = new Map();
37
40
  _modelBound = new Map();
41
+ _logger = diag.createComponentLogger({ namespace: '@cratis/chronicle/Projections' });
38
42
  /**
39
43
  * Creates a new {@link Projections} instance.
40
44
  * @param _clientArtifacts - Provider for discovered client artifact types.
@@ -48,35 +52,44 @@ export class Projections {
48
52
  async discover() {
49
53
  this._declarative.clear();
50
54
  this._modelBound.clear();
51
- for (const type of this._clientArtifacts.projections) {
55
+ const declarativeTypes = this._clientArtifacts.projections;
56
+ const readModelTypes = this._clientArtifacts.readModels;
57
+ this._logger.debug('Discovering projections', { declarativeCount: declarativeTypes.length, readModelCount: readModelTypes.length });
58
+ for (const type of declarativeTypes) {
52
59
  const metadata = getProjectionMetadata(type);
53
60
  if (metadata) {
61
+ this._logger.debug('Discovered declarative projection', { projectionId: metadata.id.value, type: type.name });
54
62
  this._declarative.set(metadata.id.value, type);
55
63
  }
56
64
  }
57
- for (const type of this._clientArtifacts.readModels) {
65
+ for (const type of readModelTypes) {
58
66
  if (!hasFromEventMetadata(type)) {
59
67
  continue;
60
68
  }
61
69
  const metadata = this.resolveModelBoundMetadata(type);
62
70
  if (!metadata) {
71
+ this._logger.debug('Read model has @fromEvent but no model-bound metadata resolved', { type: type.name });
63
72
  continue;
64
73
  }
74
+ this._logger.debug('Discovered model-bound projection', { projectionId: metadata.id.value, type: type.name });
65
75
  if (!this._modelBound.has(metadata.id.value)) {
66
76
  this._modelBound.set(metadata.id.value, type);
67
77
  }
68
78
  }
79
+ this._logger.debug('Projection discovery complete', { declarativeCount: this._declarative.size, modelBoundCount: this._modelBound.size });
69
80
  }
70
81
  /** @inheritdoc */
71
82
  async register() {
72
83
  if (this._declarative.size === 0 && this._modelBound.size === 0) {
73
84
  await this.discover();
74
85
  }
86
+ this._logger.info('Registering projections', { declarativeCount: this._declarative.size, modelBoundCount: this._modelBound.size });
75
87
  const projections = [
76
88
  ...Array.from(this._declarative.values()).map(type => this.buildDeclarativeDefinition(type)),
77
89
  ...Array.from(this._modelBound.values()).map(type => this.buildModelBoundDefinition(type))
78
90
  ];
79
91
  if (projections.length === 0) {
92
+ this._logger.info('No projections to register');
80
93
  return;
81
94
  }
82
95
  const readModels = this.buildReadModelDefinitions(projections);
@@ -89,16 +102,37 @@ export class Projections {
89
102
  });
90
103
  }
91
104
  for (const projection of projections) {
105
+ const identifier = String(projection.Identifier ?? '<unknown>');
106
+ await this.registerWithRetry(projection, identifier);
107
+ }
108
+ }
109
+ async registerWithRetry(projection, identifier, maxAttempts = 5) {
110
+ let delay = 2000;
111
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
92
112
  try {
113
+ this._logger.info('Registering projection', { identifier, readModel: projection.ReadModel, attempt });
93
114
  await this._connection.projections.register({
94
115
  EventStore: this._eventStore,
95
116
  Owner: ProjectionOwner.PROJECTION_OWNER_Client,
96
117
  Projections: [projection]
97
118
  });
119
+ this._logger.info('Projection registered successfully', { identifier });
120
+ return;
98
121
  }
99
122
  catch (error) {
100
- const identifier = String(projection.Identifier ?? '<unknown>');
101
- throw new Error(`Failed to register projection '${identifier}': ${String(error)}`);
123
+ const msg = String(error);
124
+ const isTransient = msg.includes('UNKNOWN') || msg.includes('UNAVAILABLE') || msg.includes('INTERNAL');
125
+ if (!isTransient || attempt === maxAttempts) {
126
+ throw new Error(`Failed to register projection '${identifier}' after ${attempt} attempt(s): ${msg}`);
127
+ }
128
+ this._logger.warn('Projection registration failed with transient error, retrying', {
129
+ identifier,
130
+ attempt,
131
+ nextAttemptInMs: delay,
132
+ error: msg
133
+ });
134
+ await new Promise(resolve => setTimeout(resolve, delay));
135
+ delay = Math.min(delay * 2, 15000);
102
136
  }
103
137
  }
104
138
  }
@@ -117,8 +151,8 @@ export class Projections {
117
151
  ContainerName: readModelIdentifier,
118
152
  DisplayName: readModelIdentifier,
119
153
  Sink: {
120
- ConfigurationId: this.toContractsGuid('00000000-0000-0000-0000-000000000000'),
121
- TypeId: this.toContractsGuid('22202c41-2be1-4547-9c00-f0b1f797fd75')
154
+ ConfigurationId: toContractsGuid(WellKnownSinks.Null),
155
+ TypeId: toContractsGuid(WellKnownSinks.MongoDB)
122
156
  },
123
157
  Schema: this.getReadModelSchema(readModelIdentifier),
124
158
  Indexes: [],
@@ -153,11 +187,19 @@ export class Projections {
153
187
  const definition = builder.build(metadata.id.value, type.name);
154
188
  const explicitReadModelIdentifier = definition.ReadModel;
155
189
  if (explicitReadModelIdentifier === type.name) {
156
- const inferredReadModelIdentifier = this.inferReadModelIdentifier(builder.getMappedReadModelProperties());
157
- if (inferredReadModelIdentifier) {
158
- definition.ReadModel = inferredReadModelIdentifier;
190
+ // Use explicit readModelType from decorator if provided
191
+ if (metadata.readModelType) {
192
+ const rm = getReadModelMetadata(metadata.readModelType);
193
+ definition.ReadModel = rm?.id.value ?? metadata.readModelType.name;
194
+ }
195
+ else {
196
+ const inferredReadModelIdentifier = this.inferReadModelIdentifier(builder.getMappedReadModelProperties());
197
+ if (inferredReadModelIdentifier) {
198
+ definition.ReadModel = inferredReadModelIdentifier;
199
+ }
159
200
  }
160
201
  }
202
+ definition.LastUpdated = { Value: this.computeStableLastUpdated(definition) };
161
203
  return definition;
162
204
  }
163
205
  inferReadModelIdentifier(mappedProperties) {
@@ -267,7 +309,7 @@ export class Projections {
267
309
  : (fromEvery.property ?? property);
268
310
  }
269
311
  }
270
- return {
312
+ const definition = {
271
313
  EventSequenceId: metadata.eventSequenceId ?? EventSequenceId.eventLog.value,
272
314
  Identifier: metadata.id.value,
273
315
  ReadModel: metadata.readModelIdentifier,
@@ -283,14 +325,15 @@ export class Projections {
283
325
  IncludeChildren: false,
284
326
  AutoMap: AutoMap.Inherit
285
327
  },
286
- FromEventProperty: undefined,
287
328
  RemovedWith: Array.from(removedWithByEventType.values()),
288
329
  RemovedWithJoin: Array.from(removedWithJoinByEventType.values()),
289
- LastUpdated: { Value: new Date().toISOString() },
330
+ LastUpdated: { Value: '' },
290
331
  Tags: [],
291
- AutoMap: AutoMap.Disabled,
332
+ AutoMap: AutoMap.Enabled,
292
333
  Nested: {}
293
334
  };
335
+ definition.LastUpdated = { Value: this.computeStableLastUpdated(definition) };
336
+ return definition;
294
337
  }
295
338
  resolveModelBoundMetadata(type) {
296
339
  const readModelMetadata = getReadModelMetadata(type);
@@ -379,12 +422,20 @@ export class Projections {
379
422
  getEventTypeMapKey(eventType) {
380
423
  return `${eventType.Id}:${eventType.Generation}:${eventType.Tombstone ? '1' : '0'}`;
381
424
  }
382
- toContractsGuid(value) {
383
- const hex = value.replace(/-/g, '');
384
- return {
385
- hi: Number(BigInt(`0x${hex.substring(0, 16)}`)),
386
- lo: Number(BigInt(`0x${hex.substring(16, 32)}`))
387
- };
425
+ /**
426
+ * Computes a stable, deterministic ISO timestamp from the projection definition content,
427
+ * excluding the LastUpdated field itself. This ensures the server does not interpret
428
+ * a repeated registration of an unchanged definition as a definition change, which
429
+ * would otherwise trigger an unnecessary auto-replay.
430
+ */
431
+ computeStableLastUpdated(definition) {
432
+ const { LastUpdated: _omit, ...rest } = definition;
433
+ const content = JSON.stringify(rest, Object.keys(rest).sort());
434
+ let hash = 5381;
435
+ for (let i = 0; i < content.length; i++) {
436
+ hash = ((hash << 5) + hash + content.charCodeAt(i)) >>> 0;
437
+ }
438
+ return new Date(hash * 1000).toISOString();
388
439
  }
389
440
  }
390
441
  //# sourceMappingURL=Projections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Projections.js","sourceRoot":"","sources":["../../Projections/Projections.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Projections.js","sourceRoot":"","sources":["../../Projections/Projections.ts"],"names":[],"mappings":"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"}
@@ -64,5 +64,11 @@ export declare class ProjectionBuilderFor<TReadModel> implements IProjectionBuil
64
64
  */
65
65
  getMappedReadModelProperties(): string[];
66
66
  private toContractEventType;
67
+ /**
68
+ * Computes a stable, deterministic ISO timestamp from the projection definition content,
69
+ * excluding the LastUpdated field itself. This ensures the server does not interpret
70
+ * a repeated registration of an unchanged definition as a definition change.
71
+ */
72
+ private computeStableLastUpdated;
67
73
  }
68
74
  //# sourceMappingURL=ProjectionBuilderFor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectionBuilderFor.d.ts","sourceRoot":"","sources":["../../../Projections/declarative/ProjectionBuilderFor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectionBuilderFor.d.ts","sourceRoot":"","sources":["../../../Projections/declarative/ProjectionBuilderFor.ts"],"names":[],"mappings":"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"}
@@ -150,7 +150,7 @@ export class ProjectionBuilderFor {
150
150
  * @returns The projection definition object ready to send to the kernel.
151
151
  */
152
152
  build(identifier, readModelName) {
153
- return {
153
+ const definition = {
154
154
  EventSequenceId: this._eventSequenceId,
155
155
  Identifier: identifier,
156
156
  ReadModel: this._containerName ?? readModelName,
@@ -165,11 +165,13 @@ export class ProjectionBuilderFor {
165
165
  FromEventProperty: undefined,
166
166
  RemovedWith: this._removedWith,
167
167
  RemovedWithJoin: this._removedWithJoin,
168
- LastUpdated: { Value: new Date().toISOString() },
168
+ LastUpdated: { Value: '' },
169
169
  Tags: [],
170
170
  AutoMap: this._autoMap,
171
171
  Nested: {}
172
172
  };
173
+ definition.LastUpdated = { Value: this.computeStableLastUpdated(definition) };
174
+ return definition;
173
175
  }
174
176
  /**
175
177
  * Gets the set of read model properties referenced by configured mappings.
@@ -203,5 +205,19 @@ export class ProjectionBuilderFor {
203
205
  Tombstone: false
204
206
  };
205
207
  }
208
+ /**
209
+ * Computes a stable, deterministic ISO timestamp from the projection definition content,
210
+ * excluding the LastUpdated field itself. This ensures the server does not interpret
211
+ * a repeated registration of an unchanged definition as a definition change.
212
+ */
213
+ computeStableLastUpdated(definition) {
214
+ const { LastUpdated: _omit, ...rest } = definition;
215
+ const content = JSON.stringify(rest, Object.keys(rest).sort());
216
+ let hash = 5381;
217
+ for (let i = 0; i < content.length; i++) {
218
+ hash = ((hash << 5) + hash + content.charCodeAt(i)) >>> 0;
219
+ }
220
+ return new Date(hash * 1000).toISOString();
221
+ }
206
222
  }
207
223
  //# sourceMappingURL=ProjectionBuilderFor.js.map