@cratis/chronicle 3.1.1 → 4.0.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.
- package/EventStore.ts +1 -1
- package/compliance/ComplianceContracts.ts +59 -0
- package/compliance/IPIIManager.ts +12 -0
- package/compliance/PIIManager.spec.ts +50 -0
- package/compliance/PIIManager.ts +9 -0
- package/compliance/PIINotSupportedOnEventSourceId.ts +21 -0
- package/compliance/index.ts +2 -0
- package/compliance/pii.spec.ts +37 -0
- package/compliance/pii.ts +16 -1
- package/compliance/subject.spec.ts +45 -0
- package/compliance/subject.ts +64 -0
- package/dist/EventStore.js +1 -1
- package/dist/EventStore.js.map +1 -1
- package/dist/compliance/ComplianceContracts.d.ts +31 -0
- package/dist/compliance/ComplianceContracts.d.ts.map +1 -1
- package/dist/compliance/ComplianceContracts.js +52 -0
- package/dist/compliance/ComplianceContracts.js.map +1 -1
- package/dist/compliance/IPIIManager.d.ts +11 -0
- package/dist/compliance/IPIIManager.d.ts.map +1 -1
- package/dist/compliance/PIIManager.d.ts +2 -0
- package/dist/compliance/PIIManager.d.ts.map +1 -1
- package/dist/compliance/PIIManager.js +8 -0
- package/dist/compliance/PIIManager.js.map +1 -1
- package/dist/compliance/PIINotSupportedOnEventSourceId.d.ts +11 -0
- package/dist/compliance/PIINotSupportedOnEventSourceId.d.ts.map +1 -0
- package/dist/compliance/PIINotSupportedOnEventSourceId.js +19 -0
- package/dist/compliance/PIINotSupportedOnEventSourceId.js.map +1 -0
- package/dist/compliance/index.d.ts +2 -0
- package/dist/compliance/index.d.ts.map +1 -1
- package/dist/compliance/index.js +2 -0
- package/dist/compliance/index.js.map +1 -1
- package/dist/compliance/pii.d.ts.map +1 -1
- package/dist/compliance/pii.js +13 -1
- package/dist/compliance/pii.js.map +1 -1
- package/dist/compliance/subject.d.ts +39 -0
- package/dist/compliance/subject.d.ts.map +1 -0
- package/dist/compliance/subject.js +58 -0
- package/dist/compliance/subject.js.map +1 -0
- package/dist/eventSequences/AppendOptions.d.ts +8 -0
- package/dist/eventSequences/AppendOptions.d.ts.map +1 -1
- package/dist/eventSequences/EventForEventSourceId.d.ts +7 -0
- package/dist/eventSequences/EventForEventSourceId.d.ts.map +1 -1
- package/dist/eventSequences/EventSequence.d.ts.map +1 -1
- package/dist/eventSequences/EventSequence.js +17 -6
- package/dist/eventSequences/EventSequence.js.map +1 -1
- package/dist/events/EventContext.d.ts +3 -0
- package/dist/events/EventContext.d.ts.map +1 -1
- package/dist/events/Tag.d.ts +10 -0
- package/dist/events/Tag.d.ts.map +1 -0
- package/dist/events/Tag.js +16 -0
- package/dist/events/Tag.js.map +1 -0
- package/dist/events/filterEventsByTagDecorator.d.ts +35 -0
- package/dist/events/filterEventsByTagDecorator.d.ts.map +1 -0
- package/dist/events/filterEventsByTagDecorator.js +48 -0
- package/dist/events/filterEventsByTagDecorator.js.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +4 -0
- package/dist/events/index.js.map +1 -1
- package/dist/events/mergeTags.d.ts +12 -0
- package/dist/events/mergeTags.d.ts.map +1 -0
- package/dist/events/mergeTags.js +26 -0
- package/dist/events/mergeTags.js.map +1 -0
- package/dist/events/tagDecorator.d.ts +38 -0
- package/dist/events/tagDecorator.d.ts.map +1 -0
- package/dist/events/tagDecorator.js +54 -0
- package/dist/events/tagDecorator.js.map +1 -0
- package/dist/observation/ObserverRunningState.d.ts +9 -15
- package/dist/observation/ObserverRunningState.d.ts.map +1 -1
- package/dist/observation/ObserverRunningState.js +8 -14
- package/dist/observation/ObserverRunningState.js.map +1 -1
- package/dist/observation/index.d.ts +1 -0
- package/dist/observation/index.d.ts.map +1 -1
- package/dist/observation/index.js +1 -0
- package/dist/observation/index.js.map +1 -1
- package/dist/observation/toObserverRunningState.d.ts +9 -0
- package/dist/observation/toObserverRunningState.d.ts.map +1 -0
- package/dist/observation/toObserverRunningState.js +26 -0
- package/dist/observation/toObserverRunningState.js.map +1 -0
- package/dist/projections/IProjections.d.ts +71 -1
- package/dist/projections/IProjections.d.ts.map +1 -1
- package/dist/projections/ProjectionQueryResult.d.ts +8 -0
- package/dist/projections/ProjectionQueryResult.d.ts.map +1 -0
- package/dist/projections/ProjectionQueryResult.js +4 -0
- package/dist/projections/ProjectionQueryResult.js.map +1 -0
- package/dist/projections/ProjectionState.d.ts +18 -0
- package/dist/projections/ProjectionState.d.ts.map +1 -0
- package/dist/projections/ProjectionState.js +4 -0
- package/dist/projections/ProjectionState.js.map +1 -0
- package/dist/projections/Projections.d.ts +46 -1
- package/dist/projections/Projections.d.ts.map +1 -1
- package/dist/projections/Projections.js +153 -6
- package/dist/projections/Projections.js.map +1 -1
- package/dist/projections/UnableToQueryProjection.d.ts +12 -0
- package/dist/projections/UnableToQueryProjection.d.ts.map +1 -0
- package/dist/projections/UnableToQueryProjection.js +17 -0
- package/dist/projections/UnableToQueryProjection.js.map +1 -0
- package/dist/projections/index.d.ts +3 -0
- package/dist/projections/index.d.ts.map +1 -1
- package/dist/projections/index.js +1 -0
- package/dist/projections/index.js.map +1 -1
- package/dist/projections/modelBound/eventSequence.d.ts +22 -0
- package/dist/projections/modelBound/eventSequence.d.ts.map +1 -0
- package/dist/projections/modelBound/eventSequence.js +34 -0
- package/dist/projections/modelBound/eventSequence.js.map +1 -0
- package/dist/projections/modelBound/fromAll.d.ts +26 -0
- package/dist/projections/modelBound/fromAll.d.ts.map +1 -0
- package/dist/projections/modelBound/fromAll.js +31 -0
- package/dist/projections/modelBound/fromAll.js.map +1 -0
- package/dist/projections/modelBound/index.d.ts +4 -0
- package/dist/projections/modelBound/index.d.ts.map +1 -1
- package/dist/projections/modelBound/index.js +3 -0
- package/dist/projections/modelBound/index.js.map +1 -1
- package/dist/projections/modelBound/noAutoMap.d.ts +26 -0
- package/dist/projections/modelBound/noAutoMap.d.ts.map +1 -0
- package/dist/projections/modelBound/noAutoMap.js +44 -0
- package/dist/projections/modelBound/noAutoMap.js.map +1 -0
- package/dist/reactors/Reactors.d.ts.map +1 -1
- package/dist/reactors/Reactors.js +7 -3
- package/dist/reactors/Reactors.js.map +1 -1
- package/dist/readModels/MaterializedReadModels.d.ts +0 -1
- package/dist/readModels/MaterializedReadModels.d.ts.map +1 -1
- package/dist/readModels/MaterializedReadModels.js +2 -8
- package/dist/readModels/MaterializedReadModels.js.map +1 -1
- package/dist/readModels/ReadModelSubjectResolver.d.ts +22 -0
- package/dist/readModels/ReadModelSubjectResolver.d.ts.map +1 -0
- package/dist/readModels/ReadModelSubjectResolver.js +38 -0
- package/dist/readModels/ReadModelSubjectResolver.js.map +1 -0
- package/dist/readModels/ReadModels.d.ts.map +1 -1
- package/dist/readModels/ReadModels.js +7 -7
- package/dist/readModels/ReadModels.js.map +1 -1
- package/dist/readModels/index.d.ts +1 -0
- package/dist/readModels/index.d.ts.map +1 -1
- package/dist/readModels/index.js +1 -0
- package/dist/readModels/index.js.map +1 -1
- package/dist/reducers/Reducers.d.ts.map +1 -1
- package/dist/reducers/Reducers.js +21 -3
- package/dist/reducers/Reducers.js.map +1 -1
- package/dist/schemas/JsonSchema.d.ts +14 -0
- package/dist/schemas/JsonSchema.d.ts.map +1 -1
- package/dist/schemas/JsonSchemaGenerator.d.ts +61 -5
- package/dist/schemas/JsonSchemaGenerator.d.ts.map +1 -1
- package/dist/schemas/JsonSchemaGenerator.js +130 -26
- package/dist/schemas/JsonSchemaGenerator.js.map +1 -1
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/seeding/EventSeeding.d.ts.map +1 -1
- package/dist/seeding/EventSeeding.js +3 -1
- package/dist/seeding/EventSeeding.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eventSequences/AppendOptions.ts +9 -0
- package/eventSequences/EventForEventSourceId.ts +9 -0
- package/eventSequences/EventSequence.ts +20 -6
- package/events/EventContext.ts +4 -0
- package/events/Tag.ts +14 -0
- package/events/filterEventsByTagDecorator.ts +51 -0
- package/events/index.ts +4 -0
- package/events/mergeTags.spec.ts +50 -0
- package/events/mergeTags.ts +27 -0
- package/events/tagDecorator.spec.ts +115 -0
- package/events/tagDecorator.ts +59 -0
- package/observation/ObserverRunningState.ts +9 -18
- package/observation/index.ts +1 -0
- package/observation/toObserverRunningState.ts +27 -0
- package/package.json +8 -8
- package/projections/IProjections.ts +81 -1
- package/projections/ProjectionQueryResult.ts +10 -0
- package/projections/ProjectionState.ts +25 -0
- package/projections/Projections.childrenAndNested.spec.ts +1 -1
- package/projections/Projections.modelBoundCompleteness.spec.ts +224 -0
- package/projections/Projections.operationalSurface.spec.ts +257 -0
- package/projections/Projections.spec.ts +1 -1
- package/projections/Projections.ts +180 -5
- package/projections/UnableToQueryProjection.ts +17 -0
- package/projections/index.ts +3 -0
- package/projections/modelBound/eventSequence.ts +38 -0
- package/projections/modelBound/fromAll.ts +42 -0
- package/projections/modelBound/index.ts +4 -0
- package/projections/modelBound/noAutoMap.ts +47 -0
- package/reactors/Reactors.ts +7 -3
- package/readModels/MaterializedReadModels.spec.ts +98 -0
- package/readModels/MaterializedReadModels.ts +2 -8
- package/readModels/ReadModelSubjectResolver.spec.ts +84 -0
- package/readModels/ReadModelSubjectResolver.ts +44 -0
- package/readModels/ReadModels.spec.ts +118 -0
- package/readModels/ReadModels.ts +7 -7
- package/readModels/index.ts +1 -0
- package/reducers/Reducers.spec.ts +80 -0
- package/reducers/Reducers.ts +22 -3
- package/schemas/JsonSchema.ts +16 -0
- package/schemas/JsonSchemaGenerator.spec.ts +195 -0
- package/schemas/JsonSchemaGenerator.ts +145 -27
- package/schemas/index.ts +1 -1
- package/seeding/EventSeeding.ts +3 -1
package/EventStore.ts
CHANGED
|
@@ -90,7 +90,7 @@ export class EventStore implements IEventStore {
|
|
|
90
90
|
const artifacts = DefaultClientArtifactsProvider.default;
|
|
91
91
|
this.eventTypes = new EventTypes(name.value, _connection, artifacts);
|
|
92
92
|
this.constraints = new Constraints(name.value, _connection, artifacts);
|
|
93
|
-
this.projections = new Projections(name.value, _connection, artifacts, defaultSinkTypeId);
|
|
93
|
+
this.projections = new Projections(name.value, namespace.value, _connection, artifacts, defaultSinkTypeId);
|
|
94
94
|
this.reactors = new Reactors(artifacts, _connection, name.value, namespace.value, lifecycle, this.eventLog);
|
|
95
95
|
this.reducers = new Reducers(artifacts, _connection, name.value, namespace.value, lifecycle, defaultSinkTypeId);
|
|
96
96
|
this.readModels = new ReadModels(name.value, namespace.value, _connection, artifacts, defaultSinkTypeId);
|
|
@@ -33,6 +33,16 @@ export interface DeleteEncryptionKeyRequest {
|
|
|
33
33
|
Identifier: string;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
/**
|
|
37
|
+
* Request to authorize a new encryption key for a PII encryption key identifier whose key was
|
|
38
|
+
* previously erased, so a later lawful lifecycle can protect their data again.
|
|
39
|
+
*/
|
|
40
|
+
export interface AllowNewEncryptionKeyRequest {
|
|
41
|
+
EventStore: string;
|
|
42
|
+
Namespace: string;
|
|
43
|
+
Identifier: string;
|
|
44
|
+
}
|
|
45
|
+
|
|
36
46
|
/**
|
|
37
47
|
* An empty protobuf message.
|
|
38
48
|
*/
|
|
@@ -49,6 +59,7 @@ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<
|
|
|
49
59
|
export interface ComplianceClient<CallOptionsExt = {}> {
|
|
50
60
|
release(request: DeepPartial<ReleaseRequest>, options?: CallOptions & CallOptionsExt): Promise<ReleaseResponse>;
|
|
51
61
|
deleteEncryptionKey(request: DeepPartial<DeleteEncryptionKeyRequest>, options?: CallOptions & CallOptionsExt): Promise<Empty>;
|
|
62
|
+
allowNewEncryptionKey(request: DeepPartial<AllowNewEncryptionKeyRequest>, options?: CallOptions & CallOptionsExt): Promise<Empty>;
|
|
52
63
|
}
|
|
53
64
|
|
|
54
65
|
export const ReleaseRequest = {
|
|
@@ -181,6 +192,46 @@ export const DeleteEncryptionKeyRequest = {
|
|
|
181
192
|
}
|
|
182
193
|
};
|
|
183
194
|
|
|
195
|
+
export const AllowNewEncryptionKeyRequest = {
|
|
196
|
+
encode(message: AllowNewEncryptionKeyRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
197
|
+
if (message.EventStore !== '') {
|
|
198
|
+
writer.uint32(10).string(message.EventStore);
|
|
199
|
+
}
|
|
200
|
+
if (message.Namespace !== '') {
|
|
201
|
+
writer.uint32(18).string(message.Namespace);
|
|
202
|
+
}
|
|
203
|
+
if (message.Identifier !== '') {
|
|
204
|
+
writer.uint32(26).string(message.Identifier);
|
|
205
|
+
}
|
|
206
|
+
return writer;
|
|
207
|
+
},
|
|
208
|
+
|
|
209
|
+
decode(input: BinaryReader | Uint8Array, length?: number): AllowNewEncryptionKeyRequest {
|
|
210
|
+
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
211
|
+
const end = length === undefined ? reader.len : reader.pos + length;
|
|
212
|
+
const message: AllowNewEncryptionKeyRequest = { EventStore: '', Namespace: '', Identifier: '' };
|
|
213
|
+
while (reader.pos < end) {
|
|
214
|
+
const tag = reader.uint32();
|
|
215
|
+
switch (tag >>> 3) {
|
|
216
|
+
case 1: message.EventStore = reader.string(); continue;
|
|
217
|
+
case 2: message.Namespace = reader.string(); continue;
|
|
218
|
+
case 3: message.Identifier = reader.string(); continue;
|
|
219
|
+
}
|
|
220
|
+
if ((tag & 7) === 4 || tag === 0) break;
|
|
221
|
+
reader.skip(tag & 7);
|
|
222
|
+
}
|
|
223
|
+
return message;
|
|
224
|
+
},
|
|
225
|
+
|
|
226
|
+
fromPartial(object: DeepPartial<AllowNewEncryptionKeyRequest>): AllowNewEncryptionKeyRequest {
|
|
227
|
+
return {
|
|
228
|
+
EventStore: object.EventStore ?? '',
|
|
229
|
+
Namespace: object.Namespace ?? '',
|
|
230
|
+
Identifier: object.Identifier ?? ''
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
|
|
184
235
|
export const Empty = {
|
|
185
236
|
encode(_: Empty, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {
|
|
186
237
|
return writer;
|
|
@@ -224,6 +275,14 @@ export const ComplianceDefinition = {
|
|
|
224
275
|
responseType: Empty,
|
|
225
276
|
responseStream: false as const,
|
|
226
277
|
options: {}
|
|
278
|
+
},
|
|
279
|
+
allowNewEncryptionKey: {
|
|
280
|
+
name: 'AllowNewEncryptionKey',
|
|
281
|
+
requestType: AllowNewEncryptionKeyRequest,
|
|
282
|
+
requestStream: false as const,
|
|
283
|
+
responseType: Empty,
|
|
284
|
+
responseStream: false as const,
|
|
285
|
+
options: {}
|
|
227
286
|
}
|
|
228
287
|
}
|
|
229
288
|
} as const;
|
|
@@ -14,4 +14,16 @@ export interface IPIIManager {
|
|
|
14
14
|
* this operation cannot be undone.
|
|
15
15
|
*/
|
|
16
16
|
deleteEncryptionKey(identifier: string): Promise<void>;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Authorizes a new encryption key for a PII encryption key identifier whose key was previously
|
|
20
|
+
* erased, so a later lawful lifecycle can protect their data again.
|
|
21
|
+
* @param identifier - The identifier of the encryption key to authorize a new key for.
|
|
22
|
+
* @remarks
|
|
23
|
+
* Erasing an identifier removes the key that exists now; it does not ban the identifier
|
|
24
|
+
* forever. This creates no key - it lets the next PII value written for the identifier
|
|
25
|
+
* provision a fresh, independent one, which can decrypt nothing written before the erasure.
|
|
26
|
+
* The erased key itself never comes back, whatever else happens.
|
|
27
|
+
*/
|
|
28
|
+
allowNewEncryptionKeyFor(identifier: string): Promise<void>;
|
|
17
29
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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 { describe, expect, it, vi } from 'vitest';
|
|
5
|
+
import { ChronicleConnection } from '../connection';
|
|
6
|
+
import { PIIManager } from './PIIManager';
|
|
7
|
+
|
|
8
|
+
function createPIIManager() {
|
|
9
|
+
const deleteEncryptionKeyMock = vi.fn().mockResolvedValue(undefined);
|
|
10
|
+
const allowNewEncryptionKeyMock = vi.fn().mockResolvedValue(undefined);
|
|
11
|
+
const connection = {
|
|
12
|
+
compliance: {
|
|
13
|
+
deleteEncryptionKey: deleteEncryptionKeyMock,
|
|
14
|
+
allowNewEncryptionKey: allowNewEncryptionKeyMock
|
|
15
|
+
}
|
|
16
|
+
} as unknown as ChronicleConnection;
|
|
17
|
+
|
|
18
|
+
const manager = new PIIManager('test-store', 'test-namespace', connection);
|
|
19
|
+
return { manager, deleteEncryptionKeyMock, allowNewEncryptionKeyMock };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe('PIIManager', () => {
|
|
23
|
+
describe('when deleting an encryption key', () => {
|
|
24
|
+
it('should call the compliance service with the event store, namespace, and identifier', async () => {
|
|
25
|
+
const { manager, deleteEncryptionKeyMock } = createPIIManager();
|
|
26
|
+
|
|
27
|
+
await manager.deleteEncryptionKey('some-subject');
|
|
28
|
+
|
|
29
|
+
expect(deleteEncryptionKeyMock).toHaveBeenCalledWith({
|
|
30
|
+
EventStore: 'test-store',
|
|
31
|
+
Namespace: 'test-namespace',
|
|
32
|
+
Identifier: 'some-subject'
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('when allowing a new encryption key', () => {
|
|
38
|
+
it('should call the compliance service with the event store, namespace, and identifier', async () => {
|
|
39
|
+
const { manager, allowNewEncryptionKeyMock } = createPIIManager();
|
|
40
|
+
|
|
41
|
+
await manager.allowNewEncryptionKeyFor('some-subject');
|
|
42
|
+
|
|
43
|
+
expect(allowNewEncryptionKeyMock).toHaveBeenCalledWith({
|
|
44
|
+
EventStore: 'test-store',
|
|
45
|
+
Namespace: 'test-namespace',
|
|
46
|
+
Identifier: 'some-subject'
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
package/compliance/PIIManager.ts
CHANGED
|
@@ -28,4 +28,13 @@ export class PIIManager implements IPIIManager {
|
|
|
28
28
|
Identifier: identifier
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
+
|
|
32
|
+
/** @inheritdoc */
|
|
33
|
+
async allowNewEncryptionKeyFor(identifier: string): Promise<void> {
|
|
34
|
+
await this._connection.compliance.allowNewEncryptionKey({
|
|
35
|
+
EventStore: this._eventStore,
|
|
36
|
+
Namespace: this._namespace,
|
|
37
|
+
Identifier: identifier
|
|
38
|
+
});
|
|
39
|
+
}
|
|
31
40
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
/**
|
|
5
|
+
* Error thrown when the {@link pii} decorator is applied to the `eventSourceId` property.
|
|
6
|
+
*/
|
|
7
|
+
export class PIINotSupportedOnEventSourceId extends Error {
|
|
8
|
+
/**
|
|
9
|
+
* Initializes a new instance of the {@link PIINotSupportedOnEventSourceId} class.
|
|
10
|
+
* @param typeName - The name of the type the decorator was applied to.
|
|
11
|
+
*/
|
|
12
|
+
constructor(typeName: string) {
|
|
13
|
+
super(
|
|
14
|
+
`The @pii() decorator cannot be applied to 'eventSourceId' on '${typeName}' because it is the event ` +
|
|
15
|
+
'source identifier. Event source identifiers cannot be encrypted as they are required for event ' +
|
|
16
|
+
'correlation. If the identifier itself is sensitive, use a non-sensitive surrogate value as the event ' +
|
|
17
|
+
'source identifier and store the sensitive value in a separate property marked with @pii().'
|
|
18
|
+
);
|
|
19
|
+
this.name = 'PIINotSupportedOnEventSourceId';
|
|
20
|
+
}
|
|
21
|
+
}
|
package/compliance/index.ts
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
export { ComplianceMetadataType } from './ComplianceMetadataType';
|
|
5
5
|
export type { ComplianceMetadata } from './ComplianceMetadata';
|
|
6
6
|
export { pii, getPIIMetadata, hasPIIMetadata, getTypePIIMetadata, isPII } from './pii';
|
|
7
|
+
export { subject, hasSubjectMetadata, getSubjectPropertyName } from './subject';
|
|
8
|
+
export { PIINotSupportedOnEventSourceId } from './PIINotSupportedOnEventSourceId';
|
|
7
9
|
export { ComplianceMetadataResolver } from './ComplianceMetadataResolver';
|
|
8
10
|
export type { IPIIManager } from './IPIIManager';
|
|
9
11
|
export { PIIManager } from './PIIManager';
|
|
@@ -0,0 +1,37 @@
|
|
|
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 'reflect-metadata';
|
|
5
|
+
import { describe, expect, it } from 'vitest';
|
|
6
|
+
import { pii } from './pii';
|
|
7
|
+
import { PIINotSupportedOnEventSourceId } from './PIINotSupportedOnEventSourceId';
|
|
8
|
+
|
|
9
|
+
// Decorators are applied as plain function calls (rather than `@decorator` syntax) so these
|
|
10
|
+
// fixtures don't depend on the test runner's decorator-syntax support.
|
|
11
|
+
|
|
12
|
+
describe('pii', () => {
|
|
13
|
+
describe('when applied to the eventSourceId property', () => {
|
|
14
|
+
class SomeEvent {
|
|
15
|
+
eventSourceId = '';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
it('should throw PIINotSupportedOnEventSourceId', () => {
|
|
19
|
+
expect(() => pii()(SomeEvent.prototype, 'eventSourceId')).toThrow(PIINotSupportedOnEventSourceId);
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
it('should describe why the property cannot be encrypted', () => {
|
|
23
|
+
expect(() => pii()(SomeEvent.prototype, 'eventSourceId')).toThrow(/event source identifier/);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
describe('when applied to any other property', () => {
|
|
28
|
+
class SomeEvent {
|
|
29
|
+
eventSourceId = '';
|
|
30
|
+
name = '';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
it('should not throw', () => {
|
|
34
|
+
expect(() => pii()(SomeEvent.prototype, 'name')).not.toThrow();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
});
|
package/compliance/pii.ts
CHANGED
|
@@ -4,8 +4,12 @@
|
|
|
4
4
|
import 'reflect-metadata';
|
|
5
5
|
import type { ComplianceMetadata } from './ComplianceMetadata';
|
|
6
6
|
import { ComplianceMetadataType } from './ComplianceMetadataType';
|
|
7
|
+
import { PIINotSupportedOnEventSourceId } from './PIINotSupportedOnEventSourceId';
|
|
7
8
|
import { TypeIntrospector } from '../types';
|
|
8
9
|
|
|
10
|
+
/** The property name this client uses everywhere for the event source identifier. */
|
|
11
|
+
const EVENT_SOURCE_ID_PROPERTY = 'eventSourceId';
|
|
12
|
+
|
|
9
13
|
/** Metadata key for PII decorator on properties. */
|
|
10
14
|
const PII_PROPERTY_METADATA_KEY = 'chronicle:compliance:pii:property';
|
|
11
15
|
|
|
@@ -66,7 +70,18 @@ export function pii(details?: string): PropertyDecorator & ClassDecorator {
|
|
|
66
70
|
// Property decorator usage
|
|
67
71
|
if (propertyKey !== undefined) {
|
|
68
72
|
const key = propertyKey.toString();
|
|
69
|
-
|
|
73
|
+
const declaringType = (target as { constructor: Function }).constructor;
|
|
74
|
+
|
|
75
|
+
// Encrypting the event source identifier would make its own decryption key
|
|
76
|
+
// unfindable - the identifier is required, in the clear, to correlate events and
|
|
77
|
+
// look up the key that protects everything else. Mirrors C#'s
|
|
78
|
+
// PIINotSupportedOnEventSourceId guard, which throws for the same reason when
|
|
79
|
+
// [PII] is applied to an EventSourceId/EventSourceId<T> type.
|
|
80
|
+
if (key === EVENT_SOURCE_ID_PROPERTY) {
|
|
81
|
+
throw new PIINotSupportedOnEventSourceId(declaringType.name);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
TypeIntrospector.trackProperty(declaringType, key);
|
|
70
85
|
const metadata: ComplianceMetadata = {
|
|
71
86
|
metadataType: ComplianceMetadataType.PII,
|
|
72
87
|
details: details ?? ''
|
|
@@ -0,0 +1,45 @@
|
|
|
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 'reflect-metadata';
|
|
5
|
+
import { describe, expect, it } from 'vitest';
|
|
6
|
+
import { getSubjectPropertyName, hasSubjectMetadata, subject } from './subject';
|
|
7
|
+
|
|
8
|
+
// Decorators are applied as plain function calls (rather than `@decorator` syntax) so these
|
|
9
|
+
// fixtures don't depend on the test runner's decorator-syntax support.
|
|
10
|
+
|
|
11
|
+
describe('subject', () => {
|
|
12
|
+
describe('when applied to a property', () => {
|
|
13
|
+
class SomeReadModel {
|
|
14
|
+
personId = '';
|
|
15
|
+
name = '';
|
|
16
|
+
}
|
|
17
|
+
subject()(SomeReadModel.prototype, 'personId');
|
|
18
|
+
|
|
19
|
+
it('should mark the decorated property with subject metadata', () => {
|
|
20
|
+
expect(hasSubjectMetadata(SomeReadModel.prototype, 'personId')).toBe(true);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should leave other properties without subject metadata', () => {
|
|
24
|
+
expect(hasSubjectMetadata(SomeReadModel.prototype, 'name')).toBe(false);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it('should record the decorated property name on the declaring type', () => {
|
|
28
|
+
expect(getSubjectPropertyName(SomeReadModel)).toBe('personId');
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
describe('when no property is decorated', () => {
|
|
33
|
+
class PlainReadModel {
|
|
34
|
+
id = '';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
it('should not record a subject property on the declaring type', () => {
|
|
38
|
+
expect(getSubjectPropertyName(PlainReadModel)).toBeUndefined();
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it('should report no subject metadata for its properties', () => {
|
|
42
|
+
expect(hasSubjectMetadata(PlainReadModel.prototype, 'id')).toBe(false);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
@@ -0,0 +1,64 @@
|
|
|
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 'reflect-metadata';
|
|
5
|
+
import { TypeIntrospector } from '../types';
|
|
6
|
+
|
|
7
|
+
/** Metadata key for the subject decorator on a property. */
|
|
8
|
+
const SUBJECT_PROPERTY_METADATA_KEY = 'chronicle:compliance:subject:property';
|
|
9
|
+
|
|
10
|
+
/** Metadata key for the name of the subject property recorded on the declaring type. */
|
|
11
|
+
const SUBJECT_TYPE_METADATA_KEY = 'chronicle:compliance:subject:type';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Decorator that marks a property as the compliance subject - the natural person whose Personal
|
|
15
|
+
* Identifiable Information (PII) a read model or event carries. The subject selects which
|
|
16
|
+
* encryption key protects that PII, and which key a manual release operation must use.
|
|
17
|
+
*
|
|
18
|
+
* Mirrors the .NET client's `SubjectAttribute`. When no property is decorated, resolvers fall
|
|
19
|
+
* back to the `id` property by convention, so read models that predate this decorator keep
|
|
20
|
+
* working unchanged.
|
|
21
|
+
*
|
|
22
|
+
* @returns A property decorator.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* @readModel()
|
|
27
|
+
* class Employee {
|
|
28
|
+
* @subject()
|
|
29
|
+
* personId: string = '';
|
|
30
|
+
*
|
|
31
|
+
* @pii('Employee social security number')
|
|
32
|
+
* ssn: string = '';
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function subject(): PropertyDecorator {
|
|
37
|
+
return (target: object, propertyKey: string | symbol) => {
|
|
38
|
+
const key = propertyKey.toString();
|
|
39
|
+
const declaringType = (target as { constructor: Function }).constructor;
|
|
40
|
+
|
|
41
|
+
TypeIntrospector.trackProperty(declaringType, key);
|
|
42
|
+
Reflect.defineMetadata(SUBJECT_PROPERTY_METADATA_KEY, true, target, key);
|
|
43
|
+
Reflect.defineMetadata(SUBJECT_TYPE_METADATA_KEY, key, declaringType);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Checks whether a property has been decorated with @subject.
|
|
49
|
+
* @param target - The class prototype.
|
|
50
|
+
* @param propertyKey - The property name.
|
|
51
|
+
* @returns True if the property has the @subject decorator; false otherwise.
|
|
52
|
+
*/
|
|
53
|
+
export function hasSubjectMetadata(target: object, propertyKey: string): boolean {
|
|
54
|
+
return Reflect.hasMetadata(SUBJECT_PROPERTY_METADATA_KEY, target, propertyKey);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Gets the name of the property decorated with @subject on a type, if any.
|
|
59
|
+
* @param type - The type constructor to inspect.
|
|
60
|
+
* @returns The decorated property name, or undefined when no property is decorated.
|
|
61
|
+
*/
|
|
62
|
+
export function getSubjectPropertyName(type: Function): string | undefined {
|
|
63
|
+
return Reflect.getMetadata(SUBJECT_TYPE_METADATA_KEY, type);
|
|
64
|
+
}
|
package/dist/EventStore.js
CHANGED
|
@@ -62,7 +62,7 @@ export class EventStore {
|
|
|
62
62
|
const artifacts = DefaultClientArtifactsProvider.default;
|
|
63
63
|
this.eventTypes = new EventTypes(name.value, _connection, artifacts);
|
|
64
64
|
this.constraints = new Constraints(name.value, _connection, artifacts);
|
|
65
|
-
this.projections = new Projections(name.value, _connection, artifacts, defaultSinkTypeId);
|
|
65
|
+
this.projections = new Projections(name.value, namespace.value, _connection, artifacts, defaultSinkTypeId);
|
|
66
66
|
this.reactors = new Reactors(artifacts, _connection, name.value, namespace.value, lifecycle, this.eventLog);
|
|
67
67
|
this.reducers = new Reducers(artifacts, _connection, name.value, namespace.value, lifecycle, defaultSinkTypeId);
|
|
68
68
|
this.readModels = new ReadModels(name.value, namespace.value, _connection, artifacts, defaultSinkTypeId);
|
package/dist/EventStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventStore.js","sourceRoot":"","sources":["../EventStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"EventStore.js","sourceRoot":"","sources":["../EventStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,15 @@ export interface DeleteEncryptionKeyRequest {
|
|
|
26
26
|
Namespace: string;
|
|
27
27
|
Identifier: string;
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Request to authorize a new encryption key for a PII encryption key identifier whose key was
|
|
31
|
+
* previously erased, so a later lawful lifecycle can protect their data again.
|
|
32
|
+
*/
|
|
33
|
+
export interface AllowNewEncryptionKeyRequest {
|
|
34
|
+
EventStore: string;
|
|
35
|
+
Namespace: string;
|
|
36
|
+
Identifier: string;
|
|
37
|
+
}
|
|
29
38
|
/**
|
|
30
39
|
* An empty protobuf message.
|
|
31
40
|
*/
|
|
@@ -41,6 +50,7 @@ export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<
|
|
|
41
50
|
export interface ComplianceClient<CallOptionsExt = {}> {
|
|
42
51
|
release(request: DeepPartial<ReleaseRequest>, options?: CallOptions & CallOptionsExt): Promise<ReleaseResponse>;
|
|
43
52
|
deleteEncryptionKey(request: DeepPartial<DeleteEncryptionKeyRequest>, options?: CallOptions & CallOptionsExt): Promise<Empty>;
|
|
53
|
+
allowNewEncryptionKey(request: DeepPartial<AllowNewEncryptionKeyRequest>, options?: CallOptions & CallOptionsExt): Promise<Empty>;
|
|
44
54
|
}
|
|
45
55
|
export declare const ReleaseRequest: {
|
|
46
56
|
encode(message: ReleaseRequest, writer?: BinaryWriter): BinaryWriter;
|
|
@@ -57,6 +67,11 @@ export declare const DeleteEncryptionKeyRequest: {
|
|
|
57
67
|
decode(input: BinaryReader | Uint8Array, length?: number): DeleteEncryptionKeyRequest;
|
|
58
68
|
fromPartial(object: DeepPartial<DeleteEncryptionKeyRequest>): DeleteEncryptionKeyRequest;
|
|
59
69
|
};
|
|
70
|
+
export declare const AllowNewEncryptionKeyRequest: {
|
|
71
|
+
encode(message: AllowNewEncryptionKeyRequest, writer?: BinaryWriter): BinaryWriter;
|
|
72
|
+
decode(input: BinaryReader | Uint8Array, length?: number): AllowNewEncryptionKeyRequest;
|
|
73
|
+
fromPartial(object: DeepPartial<AllowNewEncryptionKeyRequest>): AllowNewEncryptionKeyRequest;
|
|
74
|
+
};
|
|
60
75
|
export declare const Empty: {
|
|
61
76
|
encode(_: Empty, writer?: BinaryWriter): BinaryWriter;
|
|
62
77
|
decode(input: BinaryReader | Uint8Array, length?: number): Empty;
|
|
@@ -101,6 +116,22 @@ export declare const ComplianceDefinition: {
|
|
|
101
116
|
readonly responseStream: false;
|
|
102
117
|
readonly options: {};
|
|
103
118
|
};
|
|
119
|
+
readonly allowNewEncryptionKey: {
|
|
120
|
+
readonly name: "AllowNewEncryptionKey";
|
|
121
|
+
readonly requestType: {
|
|
122
|
+
encode(message: AllowNewEncryptionKeyRequest, writer?: BinaryWriter): BinaryWriter;
|
|
123
|
+
decode(input: BinaryReader | Uint8Array, length?: number): AllowNewEncryptionKeyRequest;
|
|
124
|
+
fromPartial(object: DeepPartial<AllowNewEncryptionKeyRequest>): AllowNewEncryptionKeyRequest;
|
|
125
|
+
};
|
|
126
|
+
readonly requestStream: false;
|
|
127
|
+
readonly responseType: {
|
|
128
|
+
encode(_: Empty, writer?: BinaryWriter): BinaryWriter;
|
|
129
|
+
decode(input: BinaryReader | Uint8Array, length?: number): Empty;
|
|
130
|
+
fromPartial(_: DeepPartial<Empty>): Empty;
|
|
131
|
+
};
|
|
132
|
+
readonly responseStream: false;
|
|
133
|
+
readonly options: {};
|
|
134
|
+
};
|
|
104
135
|
};
|
|
105
136
|
};
|
|
106
137
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComplianceContracts.d.ts","sourceRoot":"","sources":["../../compliance/ComplianceContracts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;CAAG;AAEzB,KAAK,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAC7F,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG;KAC3M,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,cAAc,GAAG,EAAE;IACjD,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAChH,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ComplianceContracts.d.ts","sourceRoot":"","sources":["../../compliance/ComplianceContracts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;CAAG;AAEzB,KAAK,OAAO,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAC7F,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,CAAC,GAAG,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG;KAC3M,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,cAAc,GAAG,EAAE;IACjD,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IAChH,mBAAmB,CAAC,OAAO,EAAE,WAAW,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9H,qBAAqB,CAAC,OAAO,EAAE,WAAW,CAAC,4BAA4B,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;CACrI;AAED,eAAO,MAAM,cAAc;oBACP,cAAc,WAAU,YAAY,GAAwB,YAAY;kBAmB1E,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,cAAc;wBAmBrD,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;CASnE,CAAC;AAEF,eAAO,MAAM,eAAe;oBACR,eAAe,WAAU,YAAY,GAAwB,YAAY;kBAa3E,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,eAAe;wBAiBtD,WAAW,CAAC,eAAe,CAAC,GAAG,eAAe;CAOrE,CAAC;AAEF,eAAO,MAAM,0BAA0B;oBACnB,0BAA0B,WAAU,YAAY,GAAwB,YAAY;kBAatF,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,0BAA0B;wBAiBjE,WAAW,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;CAO3F,CAAC;AAEF,eAAO,MAAM,4BAA4B;oBACrB,4BAA4B,WAAU,YAAY,GAAwB,YAAY;kBAaxF,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,4BAA4B;wBAiBnE,WAAW,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;CAO/F,CAAC;AAEF,eAAO,MAAM,KAAK;cACJ,KAAK,WAAU,YAAY,GAAwB,YAAY;kBAI3D,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,KAAK;mBAWjD,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK;CAG5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;gCAjMb,cAAc,WAAU,YAAY,GAAwB,YAAY;8BAmB1E,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,cAAc;oCAmBrD,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc;;;;gCAYhD,eAAe,WAAU,YAAY,GAAwB,YAAY;8BAa3E,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,eAAe;oCAiBtD,WAAW,CAAC,eAAe,CAAC,GAAG,eAAe;;;;;;;;gCAUlD,0BAA0B,WAAU,YAAY,GAAwB,YAAY;8BAatF,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,0BAA0B;oCAiBjE,WAAW,CAAC,0BAA0B,CAAC,GAAG,0BAA0B;;;;0BAkD9E,KAAK,WAAU,YAAY,GAAwB,YAAY;8BAI3D,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,KAAK;+BAWjD,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK;;;;;;;;gCAvDzB,4BAA4B,WAAU,YAAY,GAAwB,YAAY;8BAaxF,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,4BAA4B;oCAiBnE,WAAW,CAAC,4BAA4B,CAAC,GAAG,4BAA4B;;;;0BAUlF,KAAK,WAAU,YAAY,GAAwB,YAAY;8BAI3D,YAAY,GAAG,UAAU,WAAW,MAAM,GAAG,KAAK;+BAWjD,WAAW,CAAC,KAAK,CAAC,GAAG,KAAK;;;;;;CAqCnC,CAAC"}
|
|
@@ -147,6 +147,50 @@ export const DeleteEncryptionKeyRequest = {
|
|
|
147
147
|
};
|
|
148
148
|
}
|
|
149
149
|
};
|
|
150
|
+
export const AllowNewEncryptionKeyRequest = {
|
|
151
|
+
encode(message, writer = new BinaryWriter()) {
|
|
152
|
+
if (message.EventStore !== '') {
|
|
153
|
+
writer.uint32(10).string(message.EventStore);
|
|
154
|
+
}
|
|
155
|
+
if (message.Namespace !== '') {
|
|
156
|
+
writer.uint32(18).string(message.Namespace);
|
|
157
|
+
}
|
|
158
|
+
if (message.Identifier !== '') {
|
|
159
|
+
writer.uint32(26).string(message.Identifier);
|
|
160
|
+
}
|
|
161
|
+
return writer;
|
|
162
|
+
},
|
|
163
|
+
decode(input, length) {
|
|
164
|
+
const reader = input instanceof BinaryReader ? input : new BinaryReader(input);
|
|
165
|
+
const end = length === undefined ? reader.len : reader.pos + length;
|
|
166
|
+
const message = { EventStore: '', Namespace: '', Identifier: '' };
|
|
167
|
+
while (reader.pos < end) {
|
|
168
|
+
const tag = reader.uint32();
|
|
169
|
+
switch (tag >>> 3) {
|
|
170
|
+
case 1:
|
|
171
|
+
message.EventStore = reader.string();
|
|
172
|
+
continue;
|
|
173
|
+
case 2:
|
|
174
|
+
message.Namespace = reader.string();
|
|
175
|
+
continue;
|
|
176
|
+
case 3:
|
|
177
|
+
message.Identifier = reader.string();
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
if ((tag & 7) === 4 || tag === 0)
|
|
181
|
+
break;
|
|
182
|
+
reader.skip(tag & 7);
|
|
183
|
+
}
|
|
184
|
+
return message;
|
|
185
|
+
},
|
|
186
|
+
fromPartial(object) {
|
|
187
|
+
return {
|
|
188
|
+
EventStore: object.EventStore ?? '',
|
|
189
|
+
Namespace: object.Namespace ?? '',
|
|
190
|
+
Identifier: object.Identifier ?? ''
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
};
|
|
150
194
|
export const Empty = {
|
|
151
195
|
encode(_, writer = new BinaryWriter()) {
|
|
152
196
|
return writer;
|
|
@@ -188,6 +232,14 @@ export const ComplianceDefinition = {
|
|
|
188
232
|
responseType: Empty,
|
|
189
233
|
responseStream: false,
|
|
190
234
|
options: {}
|
|
235
|
+
},
|
|
236
|
+
allowNewEncryptionKey: {
|
|
237
|
+
name: 'AllowNewEncryptionKey',
|
|
238
|
+
requestType: AllowNewEncryptionKeyRequest,
|
|
239
|
+
requestStream: false,
|
|
240
|
+
responseType: Empty,
|
|
241
|
+
responseStream: false,
|
|
242
|
+
options: {}
|
|
191
243
|
}
|
|
192
244
|
}
|
|
193
245
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComplianceContracts.js","sourceRoot":"","sources":["../../compliance/ComplianceContracts.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ComplianceContracts.js","sourceRoot":"","sources":["../../compliance/ComplianceContracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,5 +11,16 @@ export interface IPIIManager {
|
|
|
11
11
|
* this operation cannot be undone.
|
|
12
12
|
*/
|
|
13
13
|
deleteEncryptionKey(identifier: string): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Authorizes a new encryption key for a PII encryption key identifier whose key was previously
|
|
16
|
+
* erased, so a later lawful lifecycle can protect their data again.
|
|
17
|
+
* @param identifier - The identifier of the encryption key to authorize a new key for.
|
|
18
|
+
* @remarks
|
|
19
|
+
* Erasing an identifier removes the key that exists now; it does not ban the identifier
|
|
20
|
+
* forever. This creates no key - it lets the next PII value written for the identifier
|
|
21
|
+
* provision a fresh, independent one, which can decrypt nothing written before the erasure.
|
|
22
|
+
* The erased key itself never comes back, whatever else happens.
|
|
23
|
+
*/
|
|
24
|
+
allowNewEncryptionKeyFor(identifier: string): Promise<void>;
|
|
14
25
|
}
|
|
15
26
|
//# sourceMappingURL=IPIIManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPIIManager.d.ts","sourceRoot":"","sources":["../../compliance/IPIIManager.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;;;;;;OAOG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"IPIIManager.d.ts","sourceRoot":"","sources":["../../compliance/IPIIManager.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;;;;;;OAOG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;;;;;;;;OASG;IACH,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D"}
|
|
@@ -16,5 +16,7 @@ export declare class PIIManager implements IPIIManager {
|
|
|
16
16
|
constructor(_eventStore: string, _namespace: string, _connection: ChronicleConnection);
|
|
17
17
|
/** @inheritdoc */
|
|
18
18
|
deleteEncryptionKey(identifier: string): Promise<void>;
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
allowNewEncryptionKeyFor(identifier: string): Promise<void>;
|
|
19
21
|
}
|
|
20
22
|
//# sourceMappingURL=PIIManager.d.ts.map
|