@cratis/chronicle 6.1.1 → 6.3.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/artifacts/DefaultClientArtifactsProvider.ts +5 -0
- package/artifacts/IClientArtifactsProvider.ts +3 -0
- package/confidentiality/EncryptedNotSupportedOnEventSourceId.ts +21 -0
- package/confidentiality/EncryptionScope.ts +34 -0
- package/confidentiality/PIIAndEncryptedCombinedNotSupported.ts +29 -0
- package/confidentiality/SecurityMetadata.ts +22 -0
- package/confidentiality/SecurityMetadataResolver.ts +54 -0
- package/confidentiality/SecurityMetadataType.ts +56 -0
- package/confidentiality/encrypted.spec.ts +105 -0
- package/confidentiality/encrypted.ts +143 -0
- package/confidentiality/index.ts +10 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.d.ts +2 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.d.ts.map +1 -1
- package/dist/artifacts/DefaultClientArtifactsProvider.js +4 -0
- package/dist/artifacts/DefaultClientArtifactsProvider.js.map +1 -1
- package/dist/artifacts/IClientArtifactsProvider.d.ts +2 -0
- package/dist/artifacts/IClientArtifactsProvider.d.ts.map +1 -1
- package/dist/confidentiality/EncryptedNotSupportedOnEventSourceId.d.ts +11 -0
- package/dist/confidentiality/EncryptedNotSupportedOnEventSourceId.d.ts.map +1 -0
- package/dist/confidentiality/EncryptedNotSupportedOnEventSourceId.js +19 -0
- package/dist/confidentiality/EncryptedNotSupportedOnEventSourceId.js.map +1 -0
- package/dist/confidentiality/EncryptionScope.d.ts +30 -0
- package/dist/confidentiality/EncryptionScope.d.ts.map +1 -0
- package/dist/confidentiality/EncryptionScope.js +33 -0
- package/dist/confidentiality/EncryptionScope.js.map +1 -0
- package/dist/confidentiality/PIIAndEncryptedCombinedNotSupported.d.ts +19 -0
- package/dist/confidentiality/PIIAndEncryptedCombinedNotSupported.d.ts.map +1 -0
- package/dist/confidentiality/PIIAndEncryptedCombinedNotSupported.js +27 -0
- package/dist/confidentiality/PIIAndEncryptedCombinedNotSupported.js.map +1 -0
- package/dist/confidentiality/SecurityMetadata.d.ts +18 -0
- package/dist/confidentiality/SecurityMetadata.d.ts.map +1 -0
- package/dist/confidentiality/SecurityMetadata.js +4 -0
- package/dist/confidentiality/SecurityMetadata.js.map +1 -0
- package/dist/confidentiality/SecurityMetadataResolver.d.ts +30 -0
- package/dist/confidentiality/SecurityMetadataResolver.d.ts.map +1 -0
- package/dist/confidentiality/SecurityMetadataResolver.js +48 -0
- package/dist/confidentiality/SecurityMetadataResolver.js.map +1 -0
- package/dist/confidentiality/SecurityMetadataType.d.ts +42 -0
- package/dist/confidentiality/SecurityMetadataType.d.ts.map +1 -0
- package/dist/confidentiality/SecurityMetadataType.js +50 -0
- package/dist/confidentiality/SecurityMetadataType.js.map +1 -0
- package/dist/confidentiality/encrypted.d.ts +72 -0
- package/dist/confidentiality/encrypted.d.ts.map +1 -0
- package/dist/confidentiality/encrypted.js +130 -0
- package/dist/confidentiality/encrypted.js.map +1 -0
- package/dist/confidentiality/index.d.ts +8 -0
- package/dist/confidentiality/index.d.ts.map +1 -0
- package/dist/confidentiality/index.js +9 -0
- package/dist/confidentiality/index.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/projections/GlobalHandlerPropertyNotOnVariant.d.ts +14 -0
- package/dist/projections/GlobalHandlerPropertyNotOnVariant.d.ts.map +1 -0
- package/dist/projections/GlobalHandlerPropertyNotOnVariant.js +19 -0
- package/dist/projections/GlobalHandlerPropertyNotOnVariant.js.map +1 -0
- package/dist/projections/Projections.d.ts +8 -0
- package/dist/projections/Projections.d.ts.map +1 -1
- package/dist/projections/Projections.js +81 -7
- package/dist/projections/Projections.js.map +1 -1
- package/dist/projections/VariantMustDeclareEntersOnEvent.d.ts +11 -0
- package/dist/projections/VariantMustDeclareEntersOnEvent.d.ts.map +1 -0
- package/dist/projections/VariantMustDeclareEntersOnEvent.js +16 -0
- package/dist/projections/VariantMustDeclareEntersOnEvent.js.map +1 -0
- package/dist/projections/VariantReclassifier.d.ts +63 -0
- package/dist/projections/VariantReclassifier.d.ts.map +1 -0
- package/dist/projections/VariantReclassifier.js +126 -0
- package/dist/projections/VariantReclassifier.js.map +1 -0
- package/dist/projections/declarative/IProjectionBuilderFor.d.ts +20 -0
- package/dist/projections/declarative/IProjectionBuilderFor.d.ts.map +1 -1
- package/dist/projections/declarative/ProjectionBuilderFor.d.ts +17 -1
- package/dist/projections/declarative/ProjectionBuilderFor.d.ts.map +1 -1
- package/dist/projections/declarative/ProjectionBuilderFor.js +34 -0
- package/dist/projections/declarative/ProjectionBuilderFor.js.map +1 -1
- package/dist/projections/index.d.ts +2 -0
- package/dist/projections/index.d.ts.map +1 -1
- package/dist/projections/index.js +2 -0
- package/dist/projections/index.js.map +1 -1
- package/dist/projections/modelBound/entersOn.d.ts +25 -0
- package/dist/projections/modelBound/entersOn.d.ts.map +1 -0
- package/dist/projections/modelBound/entersOn.js +28 -0
- package/dist/projections/modelBound/entersOn.js.map +1 -0
- package/dist/projections/modelBound/globalFor.d.ts +24 -0
- package/dist/projections/modelBound/globalFor.d.ts.map +1 -0
- package/dist/projections/modelBound/globalFor.js +31 -0
- package/dist/projections/modelBound/globalFor.js.map +1 -0
- package/dist/projections/modelBound/index.d.ts +6 -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/variantOf.d.ts +24 -0
- package/dist/projections/modelBound/variantOf.d.ts.map +1 -0
- package/dist/projections/modelBound/variantOf.js +27 -0
- package/dist/projections/modelBound/variantOf.js.map +1 -0
- package/dist/schemas/JsonSchema.d.ts +18 -0
- package/dist/schemas/JsonSchema.d.ts.map +1 -1
- package/dist/schemas/JsonSchemaGenerator.d.ts +41 -0
- package/dist/schemas/JsonSchemaGenerator.d.ts.map +1 -1
- package/dist/schemas/JsonSchemaGenerator.js +102 -9
- package/dist/schemas/JsonSchemaGenerator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/DecoratorType.d.ts +3 -1
- package/dist/types/DecoratorType.d.ts.map +1 -1
- package/dist/types/DecoratorType.js +2 -0
- package/dist/types/DecoratorType.js.map +1 -1
- package/events/for_EventContext/when_receiving/with_kernel_metadata.spec.ts +1 -1
- package/index.ts +3 -0
- package/package.json +7 -2
- package/projections/GlobalHandlerPropertyNotOnVariant.ts +19 -0
- package/projections/Projections.childrenAndNested.spec.ts +2 -1
- package/projections/Projections.declarativeVariants.spec.ts +157 -0
- package/projections/Projections.modelBoundCompleteness.spec.ts +2 -1
- package/projections/Projections.operationalSurface.spec.ts +2 -1
- package/projections/Projections.spec.ts +2 -1
- package/projections/Projections.ts +98 -9
- package/projections/Projections.variants.spec.ts +253 -0
- package/projections/VariantMustDeclareEntersOnEvent.ts +16 -0
- package/projections/VariantReclassifier.ts +177 -0
- package/projections/declarative/IProjectionBuilderFor.ts +22 -0
- package/projections/declarative/ProjectionBuilderFor.ts +40 -1
- package/projections/index.ts +2 -0
- package/projections/modelBound/entersOn.ts +39 -0
- package/projections/modelBound/globalFor.ts +41 -0
- package/projections/modelBound/index.ts +6 -0
- package/projections/modelBound/variantOf.ts +38 -0
- package/readModels/ReadModels.spec.ts +2 -1
- package/reducers/Reducers.spec.ts +2 -1
- package/schemas/JsonSchema.ts +20 -0
- package/schemas/JsonSchemaGenerator.confidentiality.spec.ts +194 -0
- package/schemas/JsonSchemaGenerator.ts +115 -10
- package/types/DecoratorType.ts +4 -1
|
@@ -16,6 +16,9 @@ export class ProjectionBuilderFor extends ProjectionBuilderCore {
|
|
|
16
16
|
_containerName;
|
|
17
17
|
_rewindable = true;
|
|
18
18
|
_active = true;
|
|
19
|
+
_variantIdentity;
|
|
20
|
+
_variantKey;
|
|
21
|
+
_enteringEventTypes = [];
|
|
19
22
|
constructor() {
|
|
20
23
|
super();
|
|
21
24
|
this._autoMap = AutoMap.Enabled;
|
|
@@ -41,6 +44,37 @@ export class ProjectionBuilderFor extends ProjectionBuilderCore {
|
|
|
41
44
|
return this;
|
|
42
45
|
}
|
|
43
46
|
/** @inheritdoc */
|
|
47
|
+
variantOf(identity, keyAccessor) {
|
|
48
|
+
const handler = new PropertyPathResolverProxyHandler();
|
|
49
|
+
const proxy = new Proxy({}, handler);
|
|
50
|
+
keyAccessor(proxy);
|
|
51
|
+
this._variantIdentity = identity;
|
|
52
|
+
this._variantKey = handler.property;
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
/** @inheritdoc */
|
|
56
|
+
entersOn(eventType, key) {
|
|
57
|
+
const contractType = this.toContractEventType(eventType);
|
|
58
|
+
this._enteringEventTypes.push(contractType);
|
|
59
|
+
if (key) {
|
|
60
|
+
const fromEntry = this._from.find(record => record.Key.Id === contractType.Id && record.Key.Generation === contractType.Generation);
|
|
61
|
+
if (fromEntry) {
|
|
62
|
+
fromEntry.Value.Key = key;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Gets the variant declaration this builder accumulated, if any.
|
|
69
|
+
* @returns The variant declaration, or undefined when this projection is not a variant.
|
|
70
|
+
*/
|
|
71
|
+
getVariantDeclaration() {
|
|
72
|
+
if (!this._variantIdentity || !this._variantKey) {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
return { identity: this._variantIdentity, key: this._variantKey, enteringEventTypes: this._enteringEventTypes };
|
|
76
|
+
}
|
|
77
|
+
/** @inheritdoc */
|
|
44
78
|
children(targetPropertyAccessor, builderCallback) {
|
|
45
79
|
const handler = new PropertyPathResolverProxyHandler();
|
|
46
80
|
const proxy = new Proxy({}, handler);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectionBuilderFor.js","sourceRoot":"","sources":["../../../projections/declarative/ProjectionBuilderFor.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAoB,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,
|
|
1
|
+
{"version":3,"file":"ProjectionBuilderFor.js","sourceRoot":"","sources":["../../../projections/declarative/ProjectionBuilderFor.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,8 @@ export { Projections } from './Projections';
|
|
|
4
4
|
export type { ProjectionState } from './ProjectionState';
|
|
5
5
|
export type { ProjectionQueryResult } from './ProjectionQueryResult';
|
|
6
6
|
export { UnableToQueryProjection } from './UnableToQueryProjection';
|
|
7
|
+
export { VariantMustDeclareEntersOnEvent } from './VariantMustDeclareEntersOnEvent';
|
|
8
|
+
export { GlobalHandlerPropertyNotOnVariant } from './GlobalHandlerPropertyNotOnVariant';
|
|
7
9
|
export * from './declarative';
|
|
8
10
|
export * from './modelBound';
|
|
9
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../projections/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../projections/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
export { ProjectionId } from './ProjectionId';
|
|
4
4
|
export { Projections } from './Projections';
|
|
5
5
|
export { UnableToQueryProjection } from './UnableToQueryProjection';
|
|
6
|
+
export { VariantMustDeclareEntersOnEvent } from './VariantMustDeclareEntersOnEvent';
|
|
7
|
+
export { GlobalHandlerPropertyNotOnVariant } from './GlobalHandlerPropertyNotOnVariant';
|
|
6
8
|
export * from './declarative';
|
|
7
9
|
export * from './modelBound';
|
|
8
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../projections/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../projections/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AACxF,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
/** Metadata stored by the entersOn class decorator. */
|
|
3
|
+
export interface EntersOnMetadata {
|
|
4
|
+
/** The event constructor that may create or resurrect the variant. */
|
|
5
|
+
readonly eventType: Function;
|
|
6
|
+
/** The event property name used as the key. Defaults to the event source identifier. */
|
|
7
|
+
readonly key?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Class decorator that names an event that may create or resurrect a read model variant.
|
|
11
|
+
* Repeatable - a variant may enter on more than one event. Every event a variant projects
|
|
12
|
+
* from that is not named here is automatically reclassified into an update-only join: it
|
|
13
|
+
* can bring an already-active instance up to date, but it can never create or resurrect one.
|
|
14
|
+
* @param eventType - The event constructor.
|
|
15
|
+
* @param key - Optional event property name used as the key. Defaults to the event source identifier.
|
|
16
|
+
* @returns A class decorator.
|
|
17
|
+
*/
|
|
18
|
+
export declare function entersOn(eventType: Function, key?: string): ClassDecorator;
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves entersOn metadata stored on the given class constructor.
|
|
21
|
+
* @param target - The class constructor.
|
|
22
|
+
* @returns An array of entersOn metadata entries.
|
|
23
|
+
*/
|
|
24
|
+
export declare function getEntersOnMetadata(target: Function): EntersOnMetadata[];
|
|
25
|
+
//# sourceMappingURL=entersOn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entersOn.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/entersOn.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,uDAAuD;AACvD,MAAM,WAAW,gBAAgB;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACzB;AAID;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,cAAc,CAK1E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,GAAG,gBAAgB,EAAE,CAExE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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 'reflect-metadata';
|
|
4
|
+
const METADATA_KEY = 'chronicle:projection:entersOn';
|
|
5
|
+
/**
|
|
6
|
+
* Class decorator that names an event that may create or resurrect a read model variant.
|
|
7
|
+
* Repeatable - a variant may enter on more than one event. Every event a variant projects
|
|
8
|
+
* from that is not named here is automatically reclassified into an update-only join: it
|
|
9
|
+
* can bring an already-active instance up to date, but it can never create or resurrect one.
|
|
10
|
+
* @param eventType - The event constructor.
|
|
11
|
+
* @param key - Optional event property name used as the key. Defaults to the event source identifier.
|
|
12
|
+
* @returns A class decorator.
|
|
13
|
+
*/
|
|
14
|
+
export function entersOn(eventType, key) {
|
|
15
|
+
return (target) => {
|
|
16
|
+
const existing = Reflect.getMetadata(METADATA_KEY, target) ?? [];
|
|
17
|
+
Reflect.defineMetadata(METADATA_KEY, [...existing, { eventType, key }], target);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves entersOn metadata stored on the given class constructor.
|
|
22
|
+
* @param target - The class constructor.
|
|
23
|
+
* @returns An array of entersOn metadata entries.
|
|
24
|
+
*/
|
|
25
|
+
export function getEntersOnMetadata(target) {
|
|
26
|
+
return Reflect.getMetadata(METADATA_KEY, target) ?? [];
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=entersOn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entersOn.js","sourceRoot":"","sources":["../../../projections/modelBound/entersOn.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAU1B,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAErD;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAmB,EAAE,GAAY;IACtD,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAuB,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACrF,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACpF,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAgB;IAChD,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
/** Metadata stored by the globalFor class decorator. */
|
|
3
|
+
export interface GlobalForMetadata {
|
|
4
|
+
/** The type anchoring the logical identity this shared handler applies its mappings to. */
|
|
5
|
+
readonly identity: Function;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Class decorator that declares a shared handler class whose mappings apply to every variant
|
|
9
|
+
* of the given identity, without repeating them on each variant type. A mapping that targets
|
|
10
|
+
* a member some variant lacks is a declaration error, not a silently skipped mapping.
|
|
11
|
+
*
|
|
12
|
+
* A class decorated only with globalFor is never registered as a projection on its own - it is
|
|
13
|
+
* merged into every variant of its identity before those variants are registered.
|
|
14
|
+
* @param identity - The type anchoring the logical identity this handler's mappings apply to.
|
|
15
|
+
* @returns A class decorator.
|
|
16
|
+
*/
|
|
17
|
+
export declare function globalFor(identity: Function): ClassDecorator;
|
|
18
|
+
/**
|
|
19
|
+
* Retrieves globalFor metadata stored on the given class constructor.
|
|
20
|
+
* @param target - The class constructor.
|
|
21
|
+
* @returns The globalFor metadata, or undefined if the class is not a shared handler.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getGlobalForMetadata(target: Function): GlobalForMetadata | undefined;
|
|
24
|
+
//# sourceMappingURL=globalFor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalFor.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/globalFor.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAI1B,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC/B;AAID;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,cAAc,CAM5D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAEpF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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 'reflect-metadata';
|
|
4
|
+
import { DecoratorType, TypeDiscoverer } from '../../types';
|
|
5
|
+
const METADATA_KEY = 'chronicle:projection:globalFor';
|
|
6
|
+
/**
|
|
7
|
+
* Class decorator that declares a shared handler class whose mappings apply to every variant
|
|
8
|
+
* of the given identity, without repeating them on each variant type. A mapping that targets
|
|
9
|
+
* a member some variant lacks is a declaration error, not a silently skipped mapping.
|
|
10
|
+
*
|
|
11
|
+
* A class decorated only with globalFor is never registered as a projection on its own - it is
|
|
12
|
+
* merged into every variant of its identity before those variants are registered.
|
|
13
|
+
* @param identity - The type anchoring the logical identity this handler's mappings apply to.
|
|
14
|
+
* @returns A class decorator.
|
|
15
|
+
*/
|
|
16
|
+
export function globalFor(identity) {
|
|
17
|
+
return (target) => {
|
|
18
|
+
const constructor = target;
|
|
19
|
+
Reflect.defineMetadata(METADATA_KEY, { identity }, target);
|
|
20
|
+
TypeDiscoverer.default.register(DecoratorType.GlobalForHandler, constructor, constructor.name);
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Retrieves globalFor metadata stored on the given class constructor.
|
|
25
|
+
* @param target - The class constructor.
|
|
26
|
+
* @returns The globalFor metadata, or undefined if the class is not a shared handler.
|
|
27
|
+
*/
|
|
28
|
+
export function getGlobalForMetadata(target) {
|
|
29
|
+
return Reflect.getMetadata(METADATA_KEY, target);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=globalFor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"globalFor.js","sourceRoot":"","sources":["../../../projections/modelBound/globalFor.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAQ5D,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB;IACxC,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,WAAW,GAAG,MAAqB,CAAC;QAC1C,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;QAC3D,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,gBAAgB,EAAE,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IACnG,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAgB;IACjD,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -36,4 +36,10 @@ export { fromAll, getFromAllMetadata } from './fromAll';
|
|
|
36
36
|
export type { FromAllMetadata } from './fromAll';
|
|
37
37
|
export { noAutoMap, isNoAutoMap, isPropertyNoAutoMap } from './noAutoMap';
|
|
38
38
|
export { eventSequence, eventLog, getEventSequenceMetadata } from './eventSequence';
|
|
39
|
+
export { variantOf, getVariantOfMetadata } from './variantOf';
|
|
40
|
+
export type { VariantOfMetadata } from './variantOf';
|
|
41
|
+
export { entersOn, getEntersOnMetadata } from './entersOn';
|
|
42
|
+
export type { EntersOnMetadata } from './entersOn';
|
|
43
|
+
export { globalFor, getGlobalForMetadata } from './globalFor';
|
|
44
|
+
export type { GlobalForMetadata } from './globalFor';
|
|
39
45
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACpF,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAClD,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AACjG,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AACzG,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,+BAA+B,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AACzH,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,4 +21,7 @@ export { fromEvery, getFromEveryMetadata } from './fromEvery';
|
|
|
21
21
|
export { fromAll, getFromAllMetadata } from './fromAll';
|
|
22
22
|
export { noAutoMap, isNoAutoMap, isPropertyNoAutoMap } from './noAutoMap';
|
|
23
23
|
export { eventSequence, eventLog, getEventSequenceMetadata } from './eventSequence';
|
|
24
|
+
export { variantOf, getVariantOfMetadata } from './variantOf';
|
|
25
|
+
export { entersOn, getEntersOnMetadata } from './entersOn';
|
|
26
|
+
export { globalFor, getGlobalForMetadata } from './globalFor';
|
|
24
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../projections/modelBound/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGpF,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAEzG,OAAO,EAAE,eAAe,EAAE,+BAA+B,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AAEzH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../projections/modelBound/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGpF,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAC;AAEzG,OAAO,EAAE,eAAe,EAAE,+BAA+B,EAAE,kCAAkC,EAAE,MAAM,mBAAmB,CAAC;AAEzH,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAExD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
/** Metadata stored by the variantOf class decorator. */
|
|
3
|
+
export interface VariantOfMetadata {
|
|
4
|
+
/** The type anchoring the logical identity every variant of this group shares. */
|
|
5
|
+
readonly identity: Function;
|
|
6
|
+
/** The property name on this variant used as its own key, and as the correlation property for reclassified joins. */
|
|
7
|
+
readonly key: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Class decorator that declares a read model to be one of several mutually exclusive
|
|
11
|
+
* representations of the same logical entity. Entering one variant removes the entity
|
|
12
|
+
* from every sibling variant of the same identity.
|
|
13
|
+
* @param identity - The type anchoring the logical identity shared by every variant. Does not need to be a read model itself.
|
|
14
|
+
* @param key - The property name on this variant used as its own key.
|
|
15
|
+
* @returns A class decorator.
|
|
16
|
+
*/
|
|
17
|
+
export declare function variantOf(identity: Function, key: string): ClassDecorator;
|
|
18
|
+
/**
|
|
19
|
+
* Retrieves variantOf metadata stored on the given class constructor.
|
|
20
|
+
* @param target - The class constructor.
|
|
21
|
+
* @returns The variantOf metadata, or undefined if the class is not a variant.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getVariantOfMetadata(target: Function): VariantOfMetadata | undefined;
|
|
24
|
+
//# sourceMappingURL=variantOf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variantOf.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/variantOf.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,qHAAqH;IACrH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACxB;AAID;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,cAAc,CAKzE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAEpF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
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 'reflect-metadata';
|
|
4
|
+
const METADATA_KEY = 'chronicle:projection:variantOf';
|
|
5
|
+
/**
|
|
6
|
+
* Class decorator that declares a read model to be one of several mutually exclusive
|
|
7
|
+
* representations of the same logical entity. Entering one variant removes the entity
|
|
8
|
+
* from every sibling variant of the same identity.
|
|
9
|
+
* @param identity - The type anchoring the logical identity shared by every variant. Does not need to be a read model itself.
|
|
10
|
+
* @param key - The property name on this variant used as its own key.
|
|
11
|
+
* @returns A class decorator.
|
|
12
|
+
*/
|
|
13
|
+
export function variantOf(identity, key) {
|
|
14
|
+
return (target) => {
|
|
15
|
+
const metadata = { identity, key };
|
|
16
|
+
Reflect.defineMetadata(METADATA_KEY, metadata, target);
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Retrieves variantOf metadata stored on the given class constructor.
|
|
21
|
+
* @param target - The class constructor.
|
|
22
|
+
* @returns The variantOf metadata, or undefined if the class is not a variant.
|
|
23
|
+
*/
|
|
24
|
+
export function getVariantOfMetadata(target) {
|
|
25
|
+
return Reflect.getMetadata(METADATA_KEY, target);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=variantOf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variantOf.js","sourceRoot":"","sources":["../../../projections/modelBound/variantOf.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAU1B,MAAM,YAAY,GAAG,gCAAgC,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,GAAW;IACrD,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAsB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACtD,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAgB;IACjD,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -11,6 +11,23 @@ export interface ComplianceSchemaMetadata {
|
|
|
11
11
|
*/
|
|
12
12
|
details: string;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Represents a single security classification recorded on a schema node.
|
|
16
|
+
*
|
|
17
|
+
* This is the security counterpart to {@link ComplianceSchemaMetadata} - written under its own,
|
|
18
|
+
* separate `security` schema key rather than merged into `compliance`. See
|
|
19
|
+
* `Source/confidentiality/SecurityMetadataType.ts` for why.
|
|
20
|
+
*/
|
|
21
|
+
export interface SecuritySchemaMetadata {
|
|
22
|
+
/**
|
|
23
|
+
* The type of security metadata (e.g. 'EncryptedSubject', 'EncryptedNamespace', 'EncryptedGlobal').
|
|
24
|
+
*/
|
|
25
|
+
metadataType: string;
|
|
26
|
+
/**
|
|
27
|
+
* Any additional details - can be empty.
|
|
28
|
+
*/
|
|
29
|
+
details: string;
|
|
30
|
+
}
|
|
14
31
|
/**
|
|
15
32
|
* Represents a JSON Schema object.
|
|
16
33
|
*/
|
|
@@ -26,5 +43,6 @@ export type JsonSchema = {
|
|
|
26
43
|
additionalProperties?: boolean | JsonSchema;
|
|
27
44
|
enum?: Array<string | number | boolean | null>;
|
|
28
45
|
compliance?: ComplianceSchemaMetadata[];
|
|
46
|
+
security?: SecuritySchemaMetadata[];
|
|
29
47
|
};
|
|
30
48
|
//# sourceMappingURL=JsonSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../schemas/JsonSchema.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5C,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../schemas/JsonSchema.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACrC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,oBAAoB,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC5C,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACxC,QAAQ,CAAC,EAAE,sBAAsB,EAAE,CAAC;CACvC,CAAC"}
|
|
@@ -87,5 +87,46 @@ export declare class JsonSchemaGenerator {
|
|
|
87
87
|
* nothing and makes the generated schema noisier to read and to diff.
|
|
88
88
|
*/
|
|
89
89
|
private static hasComplianceMetadataOfType;
|
|
90
|
+
/**
|
|
91
|
+
* Collects security metadata for a property from every source compliance metadata is resolved
|
|
92
|
+
* from: the property itself, its declaring class, and its own type (the concept case). This is
|
|
93
|
+
* the security counterpart to {@link collectComplianceMetadata} - a deliberately separate walk
|
|
94
|
+
* rather than a shared one, over a completely separate `@encrypted()` decorator vocabulary.
|
|
95
|
+
* @param target - The class prototype the property is declared on.
|
|
96
|
+
* @param propertyKey - The property name.
|
|
97
|
+
* @param propertyType - The property's runtime type, when resolved.
|
|
98
|
+
* @returns The collected security metadata, in property → declaring-class → type order.
|
|
99
|
+
*/
|
|
100
|
+
private static collectSecurityMetadata;
|
|
101
|
+
/**
|
|
102
|
+
* Adds security metadata to a schema node, descending into an object's properties so that the
|
|
103
|
+
* metadata always lands on the leaves that actually hold a value. This is the security
|
|
104
|
+
* counterpart to {@link addComplianceMetadataToSchema} - see its remarks for why metadata is
|
|
105
|
+
* pushed to leaves and why an array is left as a container.
|
|
106
|
+
* @param schema - The schema node to add to.
|
|
107
|
+
* @param metadata - The security metadata to add.
|
|
108
|
+
*/
|
|
109
|
+
private static addSecurityMetadataToSchema;
|
|
110
|
+
/**
|
|
111
|
+
* Checks whether a security array already carries metadata of a given type.
|
|
112
|
+
* @param security - The security array to check.
|
|
113
|
+
* @param metadataType - The metadata type to look for.
|
|
114
|
+
* @returns True when the metadata type is already present, false if not.
|
|
115
|
+
*/
|
|
116
|
+
private static hasSecurityMetadataOfType;
|
|
117
|
+
/**
|
|
118
|
+
* Rejects a property or type that resolved both compliance and security metadata.
|
|
119
|
+
* @param name - The property or type name, used in the thrown error.
|
|
120
|
+
* @param complianceMetadata - The compliance metadata collected for the property/type.
|
|
121
|
+
* @param securityMetadata - The security metadata collected for the property/type.
|
|
122
|
+
* @remarks
|
|
123
|
+
* This is not merely redundant - it corrupts the value. The kernel applies every matching
|
|
124
|
+
* handler for a property in sequence, so a value marked both ways is encrypted first under the
|
|
125
|
+
* PII key and then again under the Encrypted key; releasing it decrypts with the wrong key
|
|
126
|
+
* against ciphertext, which fails loudly rather than returning a wrong value. Checked here, at
|
|
127
|
+
* schema-generation time, the same point C#'s `EncryptedMetadataProvider.ThrowIfAlsoPII` checks
|
|
128
|
+
* it - this client has no compile-time analyzer, so this runtime check is the only backstop.
|
|
129
|
+
*/
|
|
130
|
+
private static throwIfBothCompliantAndSecure;
|
|
90
131
|
}
|
|
91
132
|
//# sourceMappingURL=JsonSchemaGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSchemaGenerator.d.ts","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAA4B,UAAU,
|
|
1
|
+
{"version":3,"file":"JsonSchemaGenerator.d.ts","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAA4B,UAAU,EAA0B,MAAM,cAAc,CAAC;AAQ5F;;GAEG;AACH,qBAAa,mBAAmB;IAC5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAGtC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAEnC;IAEH;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAWnD;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,UAAU;IAuClG,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA2CrC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAoBnC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IASlC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IASnC,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAgBjC,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAuBxC;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAyB5C;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAI1C;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAuBtC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,2BAA2B;IAyB1C;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAIxC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;CAK/C"}
|
|
@@ -4,6 +4,8 @@ import 'reflect-metadata';
|
|
|
4
4
|
import { ConceptAs, Fields, Guid } from '@cratis/fundamentals';
|
|
5
5
|
import { TypeIntrospector } from '../types';
|
|
6
6
|
import { ComplianceMetadataResolver } from '../compliance/ComplianceMetadataResolver';
|
|
7
|
+
import { SecurityMetadataResolver } from '../confidentiality/SecurityMetadataResolver';
|
|
8
|
+
import { PIIAndEncryptedCombinedNotSupported } from '../confidentiality/PIIAndEncryptedCombinedNotSupported';
|
|
7
9
|
/**
|
|
8
10
|
* Generates JSON schemas for class constructors using reflection metadata.
|
|
9
11
|
*/
|
|
@@ -46,11 +48,15 @@ export class JsonSchemaGenerator {
|
|
|
46
48
|
// the runtime type was unavailable (e.g. esbuild/tsx omits design:paramtypes).
|
|
47
49
|
if (Object.keys(propertySchema).length > 0) {
|
|
48
50
|
// An array of concept elements resolves and applies its own item-level compliance
|
|
49
|
-
// inside mapRuntimeTypeToSchema - the general
|
|
50
|
-
// below is skipped for it, mirroring the C#
|
|
51
|
+
// and security metadata inside mapRuntimeTypeToSchema - the general
|
|
52
|
+
// property/type/declaring-class walk below is skipped for it, mirroring the C#
|
|
53
|
+
// generator's enumerable-of-concept branch.
|
|
51
54
|
if (!this.isConceptArrayMember(target, memberName, memberType)) {
|
|
52
|
-
const
|
|
53
|
-
this.
|
|
55
|
+
const complianceMetadata = this.collectComplianceMetadata(prototype, memberName, memberType);
|
|
56
|
+
const securityMetadata = this.collectSecurityMetadata(prototype, memberName, memberType);
|
|
57
|
+
this.throwIfBothCompliantAndSecure(memberName, complianceMetadata, securityMetadata);
|
|
58
|
+
this.addComplianceMetadataToSchema(propertySchema, complianceMetadata);
|
|
59
|
+
this.addSecurityMetadataToSchema(propertySchema, securityMetadata);
|
|
54
60
|
}
|
|
55
61
|
schemaProperties[memberName] = propertySchema;
|
|
56
62
|
}
|
|
@@ -111,13 +117,16 @@ export class JsonSchemaGenerator {
|
|
|
111
117
|
static mapArrayTypeToSchema(declaringType, propertyName) {
|
|
112
118
|
const elementType = this.getArrayElementType(declaringType, propertyName);
|
|
113
119
|
// An array whose element is a ConceptAs<T> loses its classification the moment it is put in
|
|
114
|
-
// a list unless the element concept's own compliance metadata is carried onto the
|
|
115
|
-
// a value that would be encrypted as a scalar would otherwise be persisted in
|
|
116
|
-
// list element. Mirrors the C# generator's explicit enumerable-of-concept branch.
|
|
120
|
+
// a list unless the element concept's own compliance/security metadata is carried onto the
|
|
121
|
+
// item schema - a value that would be encrypted as a scalar would otherwise be persisted in
|
|
122
|
+
// the clear as a list element. Mirrors the C# generator's explicit enumerable-of-concept branch.
|
|
117
123
|
if (elementType && this.isConceptAs(elementType)) {
|
|
118
124
|
const itemSchema = this.mapRuntimeTypeToSchema(elementType);
|
|
119
|
-
const
|
|
120
|
-
|
|
125
|
+
const complianceMetadata = ComplianceMetadataResolver.getMetadataForType(elementType);
|
|
126
|
+
const securityMetadata = SecurityMetadataResolver.getMetadataForType(elementType);
|
|
127
|
+
this.throwIfBothCompliantAndSecure(elementType.name, complianceMetadata, securityMetadata);
|
|
128
|
+
this.addComplianceMetadataToSchema(itemSchema, complianceMetadata);
|
|
129
|
+
this.addSecurityMetadataToSchema(itemSchema, securityMetadata);
|
|
121
130
|
return { type: 'array', items: itemSchema };
|
|
122
131
|
}
|
|
123
132
|
return { type: 'array', items: { type: 'object' } };
|
|
@@ -256,5 +265,89 @@ export class JsonSchemaGenerator {
|
|
|
256
265
|
static hasComplianceMetadataOfType(compliance, metadataType) {
|
|
257
266
|
return compliance.some(item => item.metadataType === metadataType);
|
|
258
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Collects security metadata for a property from every source compliance metadata is resolved
|
|
270
|
+
* from: the property itself, its declaring class, and its own type (the concept case). This is
|
|
271
|
+
* the security counterpart to {@link collectComplianceMetadata} - a deliberately separate walk
|
|
272
|
+
* rather than a shared one, over a completely separate `@encrypted()` decorator vocabulary.
|
|
273
|
+
* @param target - The class prototype the property is declared on.
|
|
274
|
+
* @param propertyKey - The property name.
|
|
275
|
+
* @param propertyType - The property's runtime type, when resolved.
|
|
276
|
+
* @returns The collected security metadata, in property → declaring-class → type order.
|
|
277
|
+
*/
|
|
278
|
+
static collectSecurityMetadata(target, propertyKey, propertyType) {
|
|
279
|
+
const metadata = [];
|
|
280
|
+
// Property-level security decorator.
|
|
281
|
+
if (SecurityMetadataResolver.hasMetadataFor(target, propertyKey)) {
|
|
282
|
+
metadata.push(...SecurityMetadataResolver.getMetadataFor(target, propertyKey));
|
|
283
|
+
}
|
|
284
|
+
// Declaring class-level security decorator - a class-level @encrypted() marks every one of
|
|
285
|
+
// its own properties, the same way a class-level @pii() does for compliance.
|
|
286
|
+
const declaringClass = target.constructor;
|
|
287
|
+
if (declaringClass) {
|
|
288
|
+
metadata.push(...SecurityMetadataResolver.getMetadataForType(declaringClass));
|
|
289
|
+
}
|
|
290
|
+
// Type-level security decorator on the property's own type (e.g., @encrypted on a ConceptAs).
|
|
291
|
+
if (propertyType) {
|
|
292
|
+
metadata.push(...SecurityMetadataResolver.getMetadataForType(propertyType));
|
|
293
|
+
}
|
|
294
|
+
return metadata;
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Adds security metadata to a schema node, descending into an object's properties so that the
|
|
298
|
+
* metadata always lands on the leaves that actually hold a value. This is the security
|
|
299
|
+
* counterpart to {@link addComplianceMetadataToSchema} - see its remarks for why metadata is
|
|
300
|
+
* pushed to leaves and why an array is left as a container.
|
|
301
|
+
* @param schema - The schema node to add to.
|
|
302
|
+
* @param metadata - The security metadata to add.
|
|
303
|
+
*/
|
|
304
|
+
static addSecurityMetadataToSchema(schema, metadata) {
|
|
305
|
+
if (metadata.length === 0) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (schema.properties && Object.keys(schema.properties).length > 0) {
|
|
309
|
+
for (const propertySchema of Object.values(schema.properties)) {
|
|
310
|
+
this.addSecurityMetadataToSchema(propertySchema, metadata);
|
|
311
|
+
}
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const security = schema.security ?? [];
|
|
315
|
+
for (const item of metadata) {
|
|
316
|
+
const metadataType = item.metadataType.value.toString();
|
|
317
|
+
if (!this.hasSecurityMetadataOfType(security, metadataType)) {
|
|
318
|
+
security.push({ metadataType, details: item.details });
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (security.length > 0) {
|
|
322
|
+
schema.security = security;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Checks whether a security array already carries metadata of a given type.
|
|
327
|
+
* @param security - The security array to check.
|
|
328
|
+
* @param metadataType - The metadata type to look for.
|
|
329
|
+
* @returns True when the metadata type is already present, false if not.
|
|
330
|
+
*/
|
|
331
|
+
static hasSecurityMetadataOfType(security, metadataType) {
|
|
332
|
+
return security.some(item => item.metadataType === metadataType);
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Rejects a property or type that resolved both compliance and security metadata.
|
|
336
|
+
* @param name - The property or type name, used in the thrown error.
|
|
337
|
+
* @param complianceMetadata - The compliance metadata collected for the property/type.
|
|
338
|
+
* @param securityMetadata - The security metadata collected for the property/type.
|
|
339
|
+
* @remarks
|
|
340
|
+
* This is not merely redundant - it corrupts the value. The kernel applies every matching
|
|
341
|
+
* handler for a property in sequence, so a value marked both ways is encrypted first under the
|
|
342
|
+
* PII key and then again under the Encrypted key; releasing it decrypts with the wrong key
|
|
343
|
+
* against ciphertext, which fails loudly rather than returning a wrong value. Checked here, at
|
|
344
|
+
* schema-generation time, the same point C#'s `EncryptedMetadataProvider.ThrowIfAlsoPII` checks
|
|
345
|
+
* it - this client has no compile-time analyzer, so this runtime check is the only backstop.
|
|
346
|
+
*/
|
|
347
|
+
static throwIfBothCompliantAndSecure(name, complianceMetadata, securityMetadata) {
|
|
348
|
+
if (complianceMetadata.length > 0 && securityMetadata.length > 0) {
|
|
349
|
+
throw new PIIAndEncryptedCombinedNotSupported(name);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
259
352
|
}
|
|
260
353
|
//# sourceMappingURL=JsonSchemaGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSchemaGenerator.js","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAe,MAAM,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACpB,MAAM,CAAU,iBAAiB,GAAG,IAAI,GAAG,CAAyD;QACxG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;KAClD,CAAC,CAAC;IAEK,MAAM,CAAU,cAAc,GAAG,IAAI,GAAG,CAAiB;QAC7D,CAAC,MAAM,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IAEH;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,CAAC,KAAa;QAClC,OAAO;YACH,OAAO,EAAE,8CAA8C;YACvD,KAAK;YACL,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;YACZ,oBAAoB,EAAE,KAAK;SAC9B,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB,EAAE,OAAmD;QACjF,MAAM,YAAY,GAAG,OAAO,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpE,MAAM,gBAAgB,GAA+B,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAEnC,KAAK,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YACnF,8EAA8E;YAC9E,+EAA+E;YAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,kFAAkF;gBAClF,
|
|
1
|
+
{"version":3,"file":"JsonSchemaGenerator.js","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"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"}
|