@cratis/chronicle 6.3.2 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. package/EventStore.ts +3 -0
  2. package/README.md +13 -2
  3. package/artifacts/validateArtifactSchemas.spec.ts +61 -0
  4. package/artifacts/validateArtifactSchemas.ts +39 -0
  5. package/compliance/pii.ts +7 -6
  6. package/compliance/subject.ts +6 -5
  7. package/confidentiality/encrypted.ts +7 -6
  8. package/dist/EventStore.d.ts.map +1 -1
  9. package/dist/EventStore.js +2 -0
  10. package/dist/EventStore.js.map +1 -1
  11. package/dist/artifacts/validateArtifactSchemas.d.ts +4 -0
  12. package/dist/artifacts/validateArtifactSchemas.d.ts.map +1 -0
  13. package/dist/artifacts/validateArtifactSchemas.js +38 -0
  14. package/dist/artifacts/validateArtifactSchemas.js.map +1 -0
  15. package/dist/compliance/pii.d.ts +2 -1
  16. package/dist/compliance/pii.d.ts.map +1 -1
  17. package/dist/compliance/pii.js +6 -5
  18. package/dist/compliance/pii.js.map +1 -1
  19. package/dist/compliance/subject.d.ts +2 -1
  20. package/dist/compliance/subject.d.ts.map +1 -1
  21. package/dist/compliance/subject.js +5 -4
  22. package/dist/compliance/subject.js.map +1 -1
  23. package/dist/confidentiality/encrypted.d.ts +2 -1
  24. package/dist/confidentiality/encrypted.d.ts.map +1 -1
  25. package/dist/confidentiality/encrypted.js +6 -5
  26. package/dist/confidentiality/encrypted.js.map +1 -1
  27. package/dist/events/eventTypeDecorator.d.ts +8 -7
  28. package/dist/events/eventTypeDecorator.d.ts.map +1 -1
  29. package/dist/events/eventTypeDecorator.js +22 -5
  30. package/dist/events/eventTypeDecorator.js.map +1 -1
  31. package/dist/events/index.d.ts +1 -0
  32. package/dist/events/index.d.ts.map +1 -1
  33. package/dist/events/index.js +1 -0
  34. package/dist/events/index.js.map +1 -1
  35. package/dist/projections/modelBound/addFrom.d.ts +2 -1
  36. package/dist/projections/modelBound/addFrom.d.ts.map +1 -1
  37. package/dist/projections/modelBound/addFrom.js +4 -3
  38. package/dist/projections/modelBound/addFrom.js.map +1 -1
  39. package/dist/projections/modelBound/childrenFrom.d.ts +2 -1
  40. package/dist/projections/modelBound/childrenFrom.d.ts.map +1 -1
  41. package/dist/projections/modelBound/childrenFrom.js +4 -3
  42. package/dist/projections/modelBound/childrenFrom.js.map +1 -1
  43. package/dist/projections/modelBound/clearWith.d.ts +2 -1
  44. package/dist/projections/modelBound/clearWith.d.ts.map +1 -1
  45. package/dist/projections/modelBound/clearWith.js +4 -3
  46. package/dist/projections/modelBound/clearWith.js.map +1 -1
  47. package/dist/projections/modelBound/count.d.ts +2 -1
  48. package/dist/projections/modelBound/count.d.ts.map +1 -1
  49. package/dist/projections/modelBound/count.js +4 -3
  50. package/dist/projections/modelBound/count.js.map +1 -1
  51. package/dist/projections/modelBound/decrement.d.ts +2 -1
  52. package/dist/projections/modelBound/decrement.d.ts.map +1 -1
  53. package/dist/projections/modelBound/decrement.js +4 -3
  54. package/dist/projections/modelBound/decrement.js.map +1 -1
  55. package/dist/projections/modelBound/fromAll.d.ts +2 -1
  56. package/dist/projections/modelBound/fromAll.d.ts.map +1 -1
  57. package/dist/projections/modelBound/fromAll.js +4 -3
  58. package/dist/projections/modelBound/fromAll.js.map +1 -1
  59. package/dist/projections/modelBound/fromEvery.d.ts +2 -1
  60. package/dist/projections/modelBound/fromEvery.d.ts.map +1 -1
  61. package/dist/projections/modelBound/fromEvery.js +4 -3
  62. package/dist/projections/modelBound/fromEvery.js.map +1 -1
  63. package/dist/projections/modelBound/increment.d.ts +2 -1
  64. package/dist/projections/modelBound/increment.d.ts.map +1 -1
  65. package/dist/projections/modelBound/increment.js +4 -3
  66. package/dist/projections/modelBound/increment.js.map +1 -1
  67. package/dist/projections/modelBound/join.d.ts +2 -1
  68. package/dist/projections/modelBound/join.d.ts.map +1 -1
  69. package/dist/projections/modelBound/join.js +4 -3
  70. package/dist/projections/modelBound/join.js.map +1 -1
  71. package/dist/projections/modelBound/nested.d.ts +1 -6
  72. package/dist/projections/modelBound/nested.d.ts.map +1 -1
  73. package/dist/projections/modelBound/nested.js +6 -2
  74. package/dist/projections/modelBound/nested.js.map +1 -1
  75. package/dist/projections/modelBound/noAutoMap.d.ts +4 -11
  76. package/dist/projections/modelBound/noAutoMap.d.ts.map +1 -1
  77. package/dist/projections/modelBound/noAutoMap.js +6 -2
  78. package/dist/projections/modelBound/noAutoMap.js.map +1 -1
  79. package/dist/projections/modelBound/removedWith.d.ts +2 -1
  80. package/dist/projections/modelBound/removedWith.d.ts.map +1 -1
  81. package/dist/projections/modelBound/removedWith.js +4 -3
  82. package/dist/projections/modelBound/removedWith.js.map +1 -1
  83. package/dist/projections/modelBound/removedWithJoin.d.ts +2 -1
  84. package/dist/projections/modelBound/removedWithJoin.d.ts.map +1 -1
  85. package/dist/projections/modelBound/removedWithJoin.js +4 -3
  86. package/dist/projections/modelBound/removedWithJoin.js.map +1 -1
  87. package/dist/projections/modelBound/setFrom.d.ts +2 -1
  88. package/dist/projections/modelBound/setFrom.d.ts.map +1 -1
  89. package/dist/projections/modelBound/setFrom.js +4 -3
  90. package/dist/projections/modelBound/setFrom.js.map +1 -1
  91. package/dist/projections/modelBound/setFromContext.d.ts +3 -2
  92. package/dist/projections/modelBound/setFromContext.d.ts.map +1 -1
  93. package/dist/projections/modelBound/setFromContext.js +4 -3
  94. package/dist/projections/modelBound/setFromContext.js.map +1 -1
  95. package/dist/projections/modelBound/setValue.d.ts +2 -1
  96. package/dist/projections/modelBound/setValue.d.ts.map +1 -1
  97. package/dist/projections/modelBound/setValue.js +4 -3
  98. package/dist/projections/modelBound/setValue.js.map +1 -1
  99. package/dist/projections/modelBound/subtractFrom.d.ts +2 -1
  100. package/dist/projections/modelBound/subtractFrom.d.ts.map +1 -1
  101. package/dist/projections/modelBound/subtractFrom.js +4 -3
  102. package/dist/projections/modelBound/subtractFrom.js.map +1 -1
  103. package/dist/readModels/readModel.d.ts +2 -1
  104. package/dist/readModels/readModel.d.ts.map +1 -1
  105. package/dist/readModels/readModel.js +22 -5
  106. package/dist/readModels/readModel.js.map +1 -1
  107. package/dist/schemas/JsonSchemaGenerator.d.ts +6 -1
  108. package/dist/schemas/JsonSchemaGenerator.d.ts.map +1 -1
  109. package/dist/schemas/JsonSchemaGenerator.js +41 -31
  110. package/dist/schemas/JsonSchemaGenerator.js.map +1 -1
  111. package/dist/schemas/createDeferredSchema.d.ts +7 -0
  112. package/dist/schemas/createDeferredSchema.d.ts.map +1 -0
  113. package/dist/schemas/createDeferredSchema.js +19 -0
  114. package/dist/schemas/createDeferredSchema.js.map +1 -0
  115. package/dist/schemas/index.d.ts +1 -0
  116. package/dist/schemas/index.d.ts.map +1 -1
  117. package/dist/schemas/index.js.map +1 -1
  118. package/dist/schemas/jsonSchemaProperty.d.ts +2 -1
  119. package/dist/schemas/jsonSchemaProperty.d.ts.map +1 -1
  120. package/dist/schemas/jsonSchemaProperty.js +3 -2
  121. package/dist/schemas/jsonSchemaProperty.js.map +1 -1
  122. package/dist/tsconfig.tsbuildinfo +1 -1
  123. package/dist/types/TypeIntrospector.d.ts.map +1 -1
  124. package/dist/types/TypeIntrospector.js +9 -3
  125. package/dist/types/TypeIntrospector.js.map +1 -1
  126. package/dist/types/index.d.ts +2 -0
  127. package/dist/types/index.d.ts.map +1 -1
  128. package/dist/types/propertyDecoratorMetadata.d.ts +17 -0
  129. package/dist/types/propertyDecoratorMetadata.d.ts.map +1 -0
  130. package/dist/types/propertyDecoratorMetadata.js +76 -0
  131. package/dist/types/propertyDecoratorMetadata.js.map +1 -0
  132. package/dist/types/standardDecoratorMetadata.d.ts +9 -0
  133. package/dist/types/standardDecoratorMetadata.d.ts.map +1 -0
  134. package/dist/types/standardDecoratorMetadata.js +20 -0
  135. package/dist/types/standardDecoratorMetadata.js.map +1 -0
  136. package/events/classDecorators.standard.spec.ts +77 -0
  137. package/events/eventTypeDecorator.ts +31 -13
  138. package/events/index.ts +2 -0
  139. package/package.json +3 -1
  140. package/projections/modelBound/addFrom.ts +5 -4
  141. package/projections/modelBound/childrenFrom.ts +5 -4
  142. package/projections/modelBound/clearWith.ts +5 -4
  143. package/projections/modelBound/count.ts +5 -4
  144. package/projections/modelBound/decorators.standard.spec.ts +71 -0
  145. package/projections/modelBound/decrement.ts +5 -4
  146. package/projections/modelBound/fromAll.ts +5 -4
  147. package/projections/modelBound/fromEvery.ts +5 -4
  148. package/projections/modelBound/increment.ts +5 -4
  149. package/projections/modelBound/join.ts +5 -4
  150. package/projections/modelBound/nested.ts +9 -2
  151. package/projections/modelBound/noAutoMap.ts +11 -2
  152. package/projections/modelBound/removedWith.ts +5 -4
  153. package/projections/modelBound/removedWithJoin.ts +5 -4
  154. package/projections/modelBound/setFrom.ts +5 -4
  155. package/projections/modelBound/setFromContext.ts +7 -6
  156. package/projections/modelBound/setValue.ts +5 -4
  157. package/projections/modelBound/subtractFrom.ts +5 -4
  158. package/readModels/readModel.ts +24 -6
  159. package/readModels/standardFallbacks.standard.spec.ts +39 -0
  160. package/schemas/JsonSchemaGenerator.confidentiality.spec.ts +2 -0
  161. package/schemas/JsonSchemaGenerator.spec.ts +28 -1
  162. package/schemas/JsonSchemaGenerator.ts +45 -30
  163. package/schemas/createDeferredSchema.ts +21 -0
  164. package/schemas/decorators.expected.fixture.ts +24 -0
  165. package/schemas/decorators.legacy.spec.ts +62 -0
  166. package/schemas/decorators.standard.spec.ts +235 -0
  167. package/schemas/index.ts +1 -0
  168. package/schemas/jsonSchemaProperty.ts +4 -3
  169. package/schemas/legacyDesignMetadata.spec.ts +39 -0
  170. package/types/TypeIntrospector.ts +8 -3
  171. package/types/index.ts +2 -0
  172. package/types/propertyDecoratorMetadata.ts +80 -0
  173. package/types/standardDecoratorMetadata.spec.ts +31 -0
  174. package/types/standardDecoratorMetadata.ts +26 -0
  175. package/vitest.config.ts +17 -0
@@ -1 +1 @@
1
- {"version":3,"file":"setValue.js","sourceRoot":"","sources":["../../../projections/modelBound/setValue.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAUxD,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAmB,EAAE,KAAc;IACxD,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACnC,gBAAgB,CAAC,aAAa,CAAE,MAAoC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAuB,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1F,MAAM,QAAQ,GAAqB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACxD,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,WAAmB;IACnE,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"setValue.js","sourceRoot":"","sources":["../../../projections/modelBound/setValue.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAA8B,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAU7H,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAmB,EAAE,KAAc;IACxD,OAAO,gBAAgB,CAAC,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACnC,gBAAgB,CAAC,aAAa,CAAE,MAAoC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,QAAQ,GAAuB,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAC1F,MAAM,QAAQ,GAAqB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACxD,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,WAAmB;IACnE,OAAO,mBAAmB,CAAqB,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AAC5F,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import 'reflect-metadata';
2
+ import { ChroniclePropertyDecorator } from '../../types/propertyDecoratorMetadata.js';
2
3
  /** Metadata stored by the subtractFrom property decorator. */
3
4
  export interface SubtractFromMetadata {
4
5
  /** The event constructor associated with this annotation. */
@@ -12,7 +13,7 @@ export interface SubtractFromMetadata {
12
13
  * @param eventPropertyName - Optional event property name. Defaults to the property name.
13
14
  * @returns A property decorator.
14
15
  */
15
- export declare function subtractFrom(eventType: Function, eventPropertyName?: string): PropertyDecorator;
16
+ export declare function subtractFrom(eventType: Function, eventPropertyName?: string): ChroniclePropertyDecorator;
16
17
  /**
17
18
  * Retrieves all subtractFrom metadata stored on the given property.
18
19
  * @param target - The class prototype.
@@ -1 +1 @@
1
- {"version":3,"file":"subtractFrom.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/subtractFrom.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAG1B,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,+HAA+H;IAC/H,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAQ/F;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAEnG"}
1
+ {"version":3,"file":"subtractFrom.d.ts","sourceRoot":"","sources":["../../../projections/modelBound/subtractFrom.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,0BAA0B,EAAyC,MAAM,0CAA0C,CAAC;AAE7H,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B,+HAA+H;IAC/H,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,QAAQ,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,0BAA0B,CAQxG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,oBAAoB,EAAE,CAEnG"}
@@ -2,6 +2,7 @@
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  import 'reflect-metadata';
4
4
  import { TypeIntrospector } from '../../types/index.js';
5
+ import { decorateProperty, getPropertyMetadata } from '../../types/propertyDecoratorMetadata.js';
5
6
  const METADATA_KEY = 'chronicle:projection:subtractFrom';
6
7
  /**
7
8
  * Property decorator that subtracts an event property value from the decorated read model property.
@@ -10,13 +11,13 @@ const METADATA_KEY = 'chronicle:projection:subtractFrom';
10
11
  * @returns A property decorator.
11
12
  */
12
13
  export function subtractFrom(eventType, eventPropertyName) {
13
- return (target, propertyKey) => {
14
+ return decorateProperty((target, propertyKey) => {
14
15
  const key = propertyKey.toString();
15
16
  TypeIntrospector.trackProperty(target.constructor, key);
16
17
  const existing = Reflect.getMetadata(METADATA_KEY, target, key) ?? [];
17
18
  const metadata = { eventType, eventPropertyName };
18
19
  Reflect.defineMetadata(METADATA_KEY, [...existing, metadata], target, key);
19
- };
20
+ });
20
21
  }
21
22
  /**
22
23
  * Retrieves all subtractFrom metadata stored on the given property.
@@ -25,6 +26,6 @@ export function subtractFrom(eventType, eventPropertyName) {
25
26
  * @returns An array of subtractFrom metadata entries.
26
27
  */
27
28
  export function getSubtractFromMetadata(target, propertyKey) {
28
- return Reflect.getMetadata(METADATA_KEY, target, propertyKey) ?? [];
29
+ return getPropertyMetadata(METADATA_KEY, target, propertyKey) ?? [];
29
30
  }
30
31
  //# sourceMappingURL=subtractFrom.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subtractFrom.js","sourceRoot":"","sources":["../../../projections/modelBound/subtractFrom.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAUxD,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAmB,EAAE,iBAA0B;IACxE,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACnC,gBAAgB,CAAC,aAAa,CAAE,MAAoC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,QAAQ,GAA2B,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9F,MAAM,QAAQ,GAAyB,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;QACxE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,WAAmB;IACvE,OAAO,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"subtractFrom.js","sourceRoot":"","sources":["../../../projections/modelBound/subtractFrom.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAA8B,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC;AAU7H,MAAM,YAAY,GAAG,mCAAmC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAmB,EAAE,iBAA0B;IACxE,OAAO,gBAAgB,CAAC,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACrE,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QACnC,gBAAgB,CAAC,aAAa,CAAE,MAAoC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACvF,MAAM,QAAQ,GAA2B,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9F,MAAM,QAAQ,GAAyB,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC;QACxE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,GAAG,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,WAAmB;IACvE,OAAO,mBAAmB,CAAyB,YAAY,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;AAChG,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import 'reflect-metadata';
2
2
  import { ReadModelId } from './ReadModelId.js';
3
3
  import { JsonSchema } from '../schemas/index.js';
4
+ import { ChronicleClassDecorator } from '../types/standardDecoratorMetadata.js';
4
5
  /**
5
6
  * Metadata stored on a read model class.
6
7
  */
@@ -17,7 +18,7 @@ export interface ReadModelMetadata {
17
18
  * @param id - The unique identifier for the read model. Defaults to the class name if omitted.
18
19
  * @returns A class decorator.
19
20
  */
20
- export declare function readModel(id?: string): ClassDecorator;
21
+ export declare function readModel(id?: string): ChronicleClassDecorator;
21
22
  /**
22
23
  * Gets the {@link ReadModelMetadata} associated with a class decorated with {@link readModel}.
23
24
  * @param target - The class constructor to retrieve metadata for.
@@ -1 +1 @@
1
- {"version":3,"file":"readModel.d.ts","sourceRoot":"","sources":["../../readModels/readModel.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAKtE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IAE5D,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,GAAE,MAAW,GAAG,cAAc,CAiBzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"readModel.d.ts","sourceRoot":"","sources":["../../readModels/readModel.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAMhF;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IAEzB,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IAE5D,oDAAoD;IACpD,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EAAE,GAAE,MAAW,GAAG,uBAAuB,CAiClE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,QAAQ,GAAG,iBAAiB,GAAG,SAAS,CAEpF;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAErD"}
@@ -4,6 +4,7 @@ import 'reflect-metadata';
4
4
  import { ReadModelId } from './ReadModelId.js';
5
5
  import { DecoratorType, TypeDiscoverer, TypeIntrospector } from '../types/index.js';
6
6
  import { JsonSchemaGenerator } from '../schemas/index.js';
7
+ import { createDeferredSchema } from '../schemas/createDeferredSchema.js';
7
8
  /** Metadata key used to store read model information on a class. */
8
9
  const READ_MODEL_METADATA_KEY = 'chronicle:readModel';
9
10
  /**
@@ -12,17 +13,33 @@ const READ_MODEL_METADATA_KEY = 'chronicle:readModel';
12
13
  * @returns A class decorator.
13
14
  */
14
15
  export function readModel(id = '') {
15
- return (target) => {
16
- const constructor = target;
16
+ return (target, context) => {
17
+ let constructor = target;
17
18
  const readModelId = new ReadModelId(id || constructor.name);
18
- const members = TypeIntrospector.getMembers(constructor);
19
- const metadata = {
19
+ const members = context?.kind === 'class' ? undefined : TypeIntrospector.getMembers(constructor);
20
+ const resolve = createDeferredSchema(() => constructor);
21
+ const metadata = context?.kind === 'class' ? {
20
22
  id: readModelId,
21
- members,
23
+ get members() {
24
+ return resolve().members;
25
+ },
26
+ get schema() {
27
+ return resolve().schema;
28
+ }
29
+ } : {
30
+ id: readModelId,
31
+ members: members,
22
32
  schema: JsonSchemaGenerator.generate(constructor, members)
23
33
  };
24
34
  Reflect.defineMetadata(READ_MODEL_METADATA_KEY, metadata, target);
25
35
  TypeDiscoverer.default.register(DecoratorType.ReadModel, constructor, readModelId.value);
36
+ context?.addInitializer(function () {
37
+ if (this !== constructor) {
38
+ constructor = this;
39
+ Reflect.defineMetadata(READ_MODEL_METADATA_KEY, metadata, constructor);
40
+ TypeDiscoverer.default.register(DecoratorType.ReadModel, constructor, readModelId.value);
41
+ }
42
+ });
26
43
  };
27
44
  }
28
45
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"readModel.js","sourceRoot":"","sources":["../../readModels/readModel.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAc,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAgBtD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,GAAW,EAAE;IACrC,OAAO,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,WAAW,GAAG,MAAkB,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAsB;YAChC,EAAE,EAAE,WAAW;YACf,OAAO;YACP,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;SAC7D,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAC3B,aAAa,CAAC,SAAS,EACvB,WAA0B,EAC1B,WAAW,CAAC,KAAK,CACpB,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAgB;IACjD,OAAO,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgB;IACxC,OAAO,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"readModel.js","sourceRoot":"","sources":["../../readModels/readModel.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAc,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAEtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAE1E,oEAAoE;AACpE,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAgBtD;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,GAAW,EAAE;IACrC,OAAO,CAAC,MAAc,EAAE,OAA+B,EAAE,EAAE;QACvD,IAAI,WAAW,GAAG,MAAkB,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACjG,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAsB,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;YAC5D,EAAE,EAAE,WAAW;YACf,IAAI,OAAO;gBACP,OAAO,OAAO,EAAE,CAAC,OAAO,CAAC;YAC7B,CAAC;YACD,IAAI,MAAM;gBACN,OAAO,OAAO,EAAE,CAAC,MAAM,CAAC;YAC5B,CAAC;SACJ,CAAC,CAAC,CAAC;YACA,EAAE,EAAE,WAAW;YACf,OAAO,EAAE,OAAQ;YACjB,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;SAC7D,CAAC;QACF,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAC3B,aAAa,CAAC,SAAS,EACvB,WAA0B,EAC1B,WAAW,CAAC,KAAK,CACpB,CAAC;QACF,OAAO,EAAE,cAAc,CAAC;YACpB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;gBACvB,WAAW,GAAG,IAAI,CAAC;gBACnB,OAAO,CAAC,cAAc,CAAC,uBAAuB,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;gBACvE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,WAA0B,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;YAC5G,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAgB;IACjD,OAAO,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgB;IACxC,OAAO,OAAO,CAAC,WAAW,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC"}
@@ -3,6 +3,10 @@ import { JsonSchema } from './JsonSchema.js';
3
3
  /**
4
4
  * Generates JSON schemas for class constructors using reflection metadata.
5
5
  */
6
+ export interface JsonSchemaGenerationOptions {
7
+ /** Reject members and array elements without runtime types. Defaults to true for standard-decorated classes. */
8
+ readonly requireResolvedTypes?: boolean;
9
+ }
6
10
  export declare class JsonSchemaGenerator {
7
11
  private static readonly _knownTypeFormats;
8
12
  private static readonly _formatAliases;
@@ -16,9 +20,10 @@ export declare class JsonSchemaGenerator {
16
20
  * Generates a JSON schema for a class constructor.
17
21
  * @param target - The class constructor to generate schema for.
18
22
  * @param members - Optional pre-introspected members for reuse.
23
+ * @param options - Schema resolution options. A boolean remains supported for existing callers.
19
24
  * @returns The generated JSON schema.
20
25
  */
21
- static generate(target: Function, members?: ReadonlyMap<string, Function | undefined>): JsonSchema;
26
+ static generate(target: Function, members?: ReadonlyMap<string, Function | undefined>, options?: JsonSchemaGenerationOptions | boolean): JsonSchema;
22
27
  private static mapRuntimeTypeToSchema;
23
28
  /**
24
29
  * Maps an array-typed member to a schema, resolving the element type from a
@@ -1 +1 @@
1
- {"version":3,"file":"JsonSchemaGenerator.d.ts","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAA4B,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AAQ/F;;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,CASlD;IAED;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG,UAAU,CAqCjG;IAED,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"}
1
+ {"version":3,"file":"JsonSchemaGenerator.d.ts","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAA4B,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AAS/F;;GAEG;AACH,MAAM,WAAW,2BAA2B;IACxC,gHAAgH;IAChH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAC3C;AAED,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,CASlD;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,EAAE,OAAO,CAAC,EAAE,2BAA2B,GAAG,OAAO,GAAG,UAAU,CAwClJ;IAED,OAAO,CAAC,MAAM,CAAC,sBAAsB;IA+CrC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IA4BnC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IASlC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IASnC,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAkBjC,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"}
@@ -1,14 +1,12 @@
1
1
  // Copyright (c) Cratis. All rights reserved.
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  import 'reflect-metadata';
4
- import { ConceptAs, Fields, Guid } from '@cratis/fundamentals';
4
+ import { conceptAsTypeKey, Fields, Guid, typeKeyOf } from '@cratis/fundamentals';
5
5
  import { TypeIntrospector } from '../types/index.js';
6
+ import { hasOwnStandardMetadata } from '../types/standardDecoratorMetadata.js';
6
7
  import { ComplianceMetadataResolver } from '../compliance/ComplianceMetadataResolver.js';
7
8
  import { SecurityMetadataResolver } from '../confidentiality/SecurityMetadataResolver.js';
8
9
  import { PIIAndEncryptedCombinedNotSupported } from '../confidentiality/PIIAndEncryptedCombinedNotSupported.js';
9
- /**
10
- * Generates JSON schemas for class constructors using reflection metadata.
11
- */
12
10
  export class JsonSchemaGenerator {
13
11
  static _knownTypeFormats = new Map([
14
12
  [Guid, { type: 'string', format: 'guid' }],
@@ -36,14 +34,19 @@ export class JsonSchemaGenerator {
36
34
  * Generates a JSON schema for a class constructor.
37
35
  * @param target - The class constructor to generate schema for.
38
36
  * @param members - Optional pre-introspected members for reuse.
37
+ * @param options - Schema resolution options. A boolean remains supported for existing callers.
39
38
  * @returns The generated JSON schema.
40
39
  */
41
- static generate(target, members) {
40
+ static generate(target, members, options) {
41
+ const requireResolvedTypes = typeof options === 'boolean' ? options : options?.requireResolvedTypes ?? hasOwnStandardMetadata(target);
42
42
  const membersToUse = members ?? TypeIntrospector.getMembers(target);
43
43
  const schemaProperties = {};
44
44
  const prototype = target.prototype;
45
45
  for (const [memberName, memberType] of membersToUse.entries()) {
46
- const propertySchema = this.mapRuntimeTypeToSchema(memberType, target, memberName);
46
+ if (!memberType && requireResolvedTypes) {
47
+ throw new TypeError(`Cannot determine the type of ${target.name}.${memberName}; declare @field with its runtime type.`);
48
+ }
49
+ const propertySchema = this.mapRuntimeTypeToSchema(memberType, target, memberName, requireResolvedTypes);
47
50
  // Only include properties whose type was resolved. An empty schema ({}) means
48
51
  // the runtime type was unavailable (e.g. esbuild/tsx omits design:paramtypes).
49
52
  if (Object.keys(propertySchema).length > 0) {
@@ -61,9 +64,8 @@ export class JsonSchemaGenerator {
61
64
  schemaProperties[memberName] = propertySchema;
62
65
  }
63
66
  }
64
- // When no property types could be resolved, return a minimal schema with empty
65
- // properties so the server uses its fallback path that preserves all event
66
- // content as-is via ConvertUnknownSchemaTypeToClrType.
67
+ // Legacy decorators retain the minimal schema fallback for members with no
68
+ // runtime type metadata. Standard decorators reject unresolved types above.
67
69
  if (Object.keys(schemaProperties).length === 0) {
68
70
  return this.createEmptySchema(target.name);
69
71
  }
@@ -73,7 +75,7 @@ export class JsonSchemaGenerator {
73
75
  required: Object.keys(schemaProperties),
74
76
  };
75
77
  }
76
- static mapRuntimeTypeToSchema(runtimeType, declaringType, propertyName) {
78
+ static mapRuntimeTypeToSchema(runtimeType, declaringType, propertyName, requireResolvedTypes = false) {
77
79
  const knownTypeFormat = this.getKnownTypeFormat(runtimeType);
78
80
  if (knownTypeFormat) {
79
81
  return knownTypeFormat;
@@ -88,22 +90,27 @@ export class JsonSchemaGenerator {
88
90
  return { type: 'boolean' };
89
91
  }
90
92
  if (runtimeType === Array) {
91
- return this.mapArrayTypeToSchema(declaringType, propertyName);
93
+ return this.mapArrayTypeToSchema(declaringType, propertyName, requireResolvedTypes);
92
94
  }
93
95
  if (!runtimeType) {
94
96
  return {};
95
97
  }
96
- // A ConceptAs<T> serializes as its underlying primitive value, so the schema must
97
- // describe that primitive rather than the wrapper object. The generic argument T is
98
- // not available at runtime, so resolve it from the 'value' property's design:type
99
- // when present (ts-node/webpack with emitDecoratorMetadata) and fall back to string
100
- // when it is not (esbuild/tsx) — string-backed concepts are by far the common case.
98
+ // TypeScript erases ConceptAs<T>'s primitive type. Prefer an explicit field or
99
+ // static hint; legacy emitDecoratorMetadata is the last available source.
101
100
  if (this.isConceptAs(runtimeType)) {
102
- const valueType = Reflect.getMetadata('design:type', runtimeType.prototype, 'value');
103
- return this.mapRuntimeTypeToSchema(valueType ?? String);
101
+ const concept = runtimeType;
102
+ const fieldType = Fields.getFieldsForType(concept).find(field => field.name === 'value')?.type;
103
+ const valueType = fieldType ?? concept.valueType ?? Reflect.getMetadata('design:type', runtimeType.prototype, 'value');
104
+ if (!valueType && !requireResolvedTypes)
105
+ return { type: 'string' }; // Legacy schema compatibility.
106
+ const valueSchema = this.mapRuntimeTypeToSchema(valueType, undefined, undefined, requireResolvedTypes);
107
+ if (!valueType || !valueSchema.type || (requireResolvedTypes && valueSchema.type === 'object')) {
108
+ throw new TypeError(`Cannot determine the value type of concept ${runtimeType.name}; declare static readonly valueType = String, Number, Boolean, Guid, or Date.`);
109
+ }
110
+ return valueSchema;
104
111
  }
105
112
  if (runtimeType !== Object) {
106
- return this.generate(runtimeType);
113
+ return this.generate(runtimeType, undefined, requireResolvedTypes);
107
114
  }
108
115
  return { type: 'object' };
109
116
  }
@@ -114,14 +121,14 @@ export class JsonSchemaGenerator {
114
121
  * @param propertyName - The array property name.
115
122
  * @returns The array schema, with the element's own compliance metadata carried onto `items` when the element is a PII concept.
116
123
  */
117
- static mapArrayTypeToSchema(declaringType, propertyName) {
124
+ static mapArrayTypeToSchema(declaringType, propertyName, requireResolvedTypes) {
118
125
  const elementType = this.getArrayElementType(declaringType, propertyName);
119
126
  // An array whose element is a ConceptAs<T> loses its classification the moment it is put in
120
127
  // a list unless the element concept's own compliance/security metadata is carried onto the
121
128
  // item schema - a value that would be encrypted as a scalar would otherwise be persisted in
122
129
  // the clear as a list element. Mirrors the C# generator's explicit enumerable-of-concept branch.
123
130
  if (elementType && this.isConceptAs(elementType)) {
124
- const itemSchema = this.mapRuntimeTypeToSchema(elementType);
131
+ const itemSchema = this.mapRuntimeTypeToSchema(elementType, undefined, undefined, requireResolvedTypes);
125
132
  const complianceMetadata = ComplianceMetadataResolver.getMetadataForType(elementType);
126
133
  const securityMetadata = SecurityMetadataResolver.getMetadataForType(elementType);
127
134
  this.throwIfBothCompliantAndSecure(elementType.name, complianceMetadata, securityMetadata);
@@ -129,7 +136,15 @@ export class JsonSchemaGenerator {
129
136
  this.addSecurityMetadataToSchema(itemSchema, securityMetadata);
130
137
  return { type: 'array', items: itemSchema };
131
138
  }
132
- return { type: 'array', items: { type: 'object' } };
139
+ if (!elementType) {
140
+ if (requireResolvedTypes) {
141
+ throw new TypeError(`Cannot determine the element type of ${declaringType?.name}.${propertyName}; declare @field(Array, { genericArguments: [ItemType] }).`);
142
+ }
143
+ return { type: 'array', items: { type: 'object' } };
144
+ }
145
+ if (!requireResolvedTypes)
146
+ return { type: 'array', items: { type: 'object' } }; // Legacy schema compatibility.
147
+ return { type: 'array', items: this.mapRuntimeTypeToSchema(elementType, undefined, undefined, true) };
133
148
  }
134
149
  /**
135
150
  * Resolves the element type of an array property from its `@field(Array, { genericArguments: [...] })`
@@ -161,20 +176,15 @@ export class JsonSchemaGenerator {
161
176
  return elementType !== undefined && this.isConceptAs(elementType);
162
177
  }
163
178
  static isConceptAs(runtimeType) {
164
- let current = runtimeType;
165
- while (current && current !== Function.prototype) {
166
- if (current === ConceptAs) {
167
- return true;
168
- }
169
- current = Object.getPrototypeOf(current);
170
- }
171
- return false;
179
+ return typeKeyOf(runtimeType) === conceptAsTypeKey;
172
180
  }
173
181
  static getKnownTypeFormat(runtimeType) {
174
182
  if (!runtimeType) {
175
183
  return undefined;
176
184
  }
177
- const known = this._knownTypeFormats.get(runtimeType);
185
+ const known = typeKeyOf(runtimeType) === 'Guid'
186
+ ? this._knownTypeFormats.get(Guid)
187
+ : this._knownTypeFormats.get(runtimeType);
178
188
  if (!known) {
179
189
  return undefined;
180
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"JsonSchemaGenerator.js","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"JsonSchemaGenerator.js","sourceRoot":"","sources":["../../schemas/JsonSchemaGenerator.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAe,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,mCAAmC,EAAE,MAAM,2DAA2D,CAAC;AAUhH,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;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,MAAgB,EAAE,OAAmD,EAAE,OAA+C;QAClI,MAAM,oBAAoB,GAAG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAoB,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACtI,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,IAAI,CAAC,UAAU,IAAI,oBAAoB,EAAE,CAAC;gBACtC,MAAM,IAAI,SAAS,CAAC,gCAAgC,MAAM,CAAC,IAAI,IAAI,UAAU,yCAAyC,CAAC,CAAC;YAC5H,CAAC;YACD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,CAAC,CAAC;YACzG,8EAA8E;YAC9E,+EAA+E;YAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,kFAAkF;gBAClF,oEAAoE;gBACpE,+EAA+E;gBAC/E,4CAA4C;gBAC5C,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;oBAC7D,MAAM,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;oBAC7F,MAAM,gBAAgB,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;oBACzF,IAAI,CAAC,6BAA6B,CAAC,UAAU,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;oBACrF,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oBACvE,IAAI,CAAC,2BAA2B,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;gBACvE,CAAC;gBACD,gBAAgB,CAAC,UAAU,CAAC,GAAG,cAAc,CAAC;YAClD,CAAC;QACL,CAAC;QAED,2EAA2E;QAC3E,4EAA4E;QAC5E,IAAI,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO;YACH,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC;YACtC,UAAU,EAAE,gBAAgB;YAC5B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;SAC1C,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,WAAiC,EAAE,aAAwB,EAAE,YAAqB,EAAE,oBAAoB,GAAG,KAAK;QAClJ,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC7D,IAAI,eAAe,EAAE,CAAC;YAClB,OAAO,eAAe,CAAC;QAC3B,CAAC;QAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC/B,CAAC;QAED,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACd,CAAC;QAED,+EAA+E;QAC/E,0EAA0E;QAC1E,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,WAAkD,CAAC;YACnE,MAAM,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAsB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,IAAI,CAAC;YAC9G,MAAM,SAAS,GAAG,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,SAAS,EAAE,OAAO,CAAyB,CAAC;YAC/I,IAAI,CAAC,SAAS,IAAI,CAAC,oBAAoB;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,+BAA+B;YACnG,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACvG,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,oBAAoB,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC7F,MAAM,IAAI,SAAS,CAAC,8CAA8C,WAAW,CAAC,IAAI,+EAA+E,CAAC,CAAC;YACvK,CAAC;YACD,OAAO,WAAW,CAAC;QACvB,CAAC;QAED,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,oBAAoB,CAAC,aAAmC,EAAE,YAAgC,EAAE,oBAA6B;QACpI,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAE1E,4FAA4F;QAC5F,2FAA2F;QAC3F,4FAA4F;QAC5F,iGAAiG;QACjG,IAAI,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACxG,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACtF,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAClF,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,IAAI,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;YAC3F,IAAI,CAAC,6BAA6B,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;YACnE,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;YAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAChD,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,IAAI,oBAAoB,EAAE,CAAC;gBACvB,MAAM,IAAI,SAAS,CAAC,wCAAwC,aAAa,EAAE,IAAI,IAAI,YAAY,4DAA4D,CAAC,CAAC;YACjK,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,oBAAoB;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,+BAA+B;QAC/G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC;IAC1G,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,mBAAmB,CAAC,aAAmC,EAAE,YAAgC;QACpG,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;YAClC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,aAA4B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACvH,OAAO,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,oBAAoB,CAAC,aAAuB,EAAE,YAAoB,EAAE,WAAiC;QAChH,IAAI,WAAW,KAAK,KAAK,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC1E,OAAO,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,WAAqB;QAC5C,OAAO,SAAS,CAAC,WAA0B,CAAC,KAAK,gBAAgB,CAAC;IACtE,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,WAAiC;QAC/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,WAA0B,CAAC,KAAK,MAAM;YAC1D,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO;YACH,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;SAC7C,CAAC;IACN,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,MAAc;QACzC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,yBAAyB,CAAC,MAAc,EAAE,WAAmB,EAAE,YAAuB;QACjG,MAAM,QAAQ,GAAyB,EAAE,CAAC;QAE1C,uCAAuC;QACvC,IAAI,0BAA0B,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,uFAAuF;QACvF,2FAA2F;QAC3F,MAAM,cAAc,GAAI,MAAqC,CAAC,WAAW,CAAC;QAC1E,IAAI,cAAc,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;QACpF,CAAC;QAED,0FAA0F;QAC1F,IAAI,YAAY,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACK,MAAM,CAAC,6BAA6B,CAAC,MAAkB,EAAE,QAA8B;QAC3F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,6BAA6B,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YACjE,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC9D,UAAU,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,CAAC;QACL,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QACnC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,2BAA2B,CAAC,UAAsC,EAAE,YAAoB;QACnG,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;;;;OASG;IACK,MAAM,CAAC,uBAAuB,CAAC,MAAc,EAAE,WAAmB,EAAE,YAAuB;QAC/F,MAAM,QAAQ,GAAuB,EAAE,CAAC;QAExC,qCAAqC;QACrC,IAAI,wBAAwB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,2FAA2F;QAC3F,6EAA6E;QAC7E,MAAM,cAAc,GAAI,MAAqC,CAAC,WAAW,CAAC;QAC1E,IAAI,cAAc,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;QAClF,CAAC;QAED,8FAA8F;QAC9F,IAAI,YAAY,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC;QAChF,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACK,MAAM,CAAC,2BAA2B,CAAC,MAAkB,EAAE,QAA4B;QACvF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;QACX,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,KAAK,MAAM,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5D,IAAI,CAAC,2BAA2B,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC/D,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC/B,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,MAAM,CAAC,yBAAyB,CAAC,QAAkC,EAAE,YAAoB;QAC7F,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,MAAM,CAAC,6BAA6B,CAAC,IAAY,EAAE,kBAAwC,EAAE,gBAAoC;QACrI,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,MAAM,IAAI,mCAAmC,CAAC,IAAI,CAAC,CAAC;QACxD,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,7 @@
1
+ import { JsonSchema } from './JsonSchema.js';
2
+ /** Resolves a standard-decorated class's members and schema together, after class evaluation. */
3
+ export declare function createDeferredSchema(getType: () => Function): () => {
4
+ members: ReadonlyMap<string, Function | undefined>;
5
+ schema: JsonSchema;
6
+ };
7
+ //# sourceMappingURL=createDeferredSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDeferredSchema.d.ts","sourceRoot":"","sources":["../../schemas/createDeferredSchema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAK7C,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,QAAQ,GAAG,MAAM;IAAE,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAW9I"}
@@ -0,0 +1,19 @@
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 { JsonSchemaGenerator } from './JsonSchemaGenerator.js';
4
+ import { TypeIntrospector } from '../types/TypeIntrospector.js';
5
+ import { requireCompletedStandardMetadata } from '../types/standardDecoratorMetadata.js';
6
+ /** Resolves a standard-decorated class's members and schema together, after class evaluation. */
7
+ export function createDeferredSchema(getType) {
8
+ let resolved;
9
+ return () => {
10
+ const type = getType();
11
+ requireCompletedStandardMetadata(type);
12
+ if (!resolved) {
13
+ const members = TypeIntrospector.getMembers(type);
14
+ resolved = { members, schema: JsonSchemaGenerator.generate(type, members, { requireResolvedTypes: true }) };
15
+ }
16
+ return resolved;
17
+ };
18
+ }
19
+ //# sourceMappingURL=createDeferredSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDeferredSchema.js","sourceRoot":"","sources":["../../schemas/createDeferredSchema.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAGrG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF,iGAAiG;AACjG,MAAM,UAAU,oBAAoB,CAAC,OAAuB;IACxD,IAAI,QAAgG,CAAC;IACrG,OAAO,GAAG,EAAE;QACR,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,gCAAgC,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClD,QAAQ,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAChH,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC;AACN,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { JsonSchemaGenerator } from './JsonSchemaGenerator.js';
2
+ export type { JsonSchemaGenerationOptions } from './JsonSchemaGenerator.js';
2
3
  export { jsonSchemaProperty, getTrackedJsonSchemaProperties } from './jsonSchemaProperty.js';
3
4
  export type { ComplianceSchemaMetadata, JsonSchema } from './JsonSchema.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAC7F,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAC7F,YAAY,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../schemas/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import 'reflect-metadata';
2
+ import { ChroniclePropertyDecorator } from '../types/propertyDecoratorMetadata.js';
2
3
  /**
3
4
  * Decorates a class property so its runtime type metadata can be used for JSON schema generation.
4
5
  * @returns A property decorator.
5
6
  */
6
- export declare function jsonSchemaProperty(): PropertyDecorator;
7
+ export declare function jsonSchemaProperty(): ChroniclePropertyDecorator;
7
8
  /**
8
9
  * Gets all tracked schema properties for a type.
9
10
  * @param target - The class constructor to inspect.
@@ -1 +1 @@
1
- {"version":3,"file":"jsonSchemaProperty.d.ts","sourceRoot":"","sources":["../../schemas/jsonSchemaProperty.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAG1B;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAItD;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAEzE"}
1
+ {"version":3,"file":"jsonSchemaProperty.d.ts","sourceRoot":"","sources":["../../schemas/jsonSchemaProperty.ts"],"names":[],"mappings":"AAGA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAE,0BAA0B,EAAoB,MAAM,uCAAuC,CAAC;AAErG;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,0BAA0B,CAI/D;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,CAEzE"}
@@ -2,14 +2,15 @@
2
2
  // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
3
  import 'reflect-metadata';
4
4
  import { TypeIntrospector } from '../types/index.js';
5
+ import { decorateProperty } from '../types/propertyDecoratorMetadata.js';
5
6
  /**
6
7
  * Decorates a class property so its runtime type metadata can be used for JSON schema generation.
7
8
  * @returns A property decorator.
8
9
  */
9
10
  export function jsonSchemaProperty() {
10
- return (target, propertyKey) => {
11
+ return decorateProperty((target, propertyKey) => {
11
12
  TypeIntrospector.trackProperty(target.constructor, propertyKey.toString());
12
- };
13
+ });
13
14
  }
14
15
  /**
15
16
  * Gets all tracked schema properties for a type.
@@ -1 +1 @@
1
- {"version":3,"file":"jsonSchemaProperty.js","sourceRoot":"","sources":["../../schemas/jsonSchemaProperty.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAC9B,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACpD,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,WAAuB,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAgB;IAC3D,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"jsonSchemaProperty.js","sourceRoot":"","sources":["../../schemas/jsonSchemaProperty.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,qGAAqG;AAErG,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAA8B,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAErG;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAC9B,OAAO,gBAAgB,CAAC,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACrE,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,WAAuB,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,MAAgB;IAC3D,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}