@shaclmate/compiler 4.0.38 → 4.0.39

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 (161) hide show
  1. package/dist/ShapesGraphToAstTransformer.js +12 -12
  2. package/dist/_ShapesGraphToAstTransformer/transformPropertyShapeToAstObjectTypeProperty.js +24 -24
  3. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstCompoundType.js +4 -4
  4. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstListType.js +1 -1
  5. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstObjectType.js +16 -16
  6. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstTermType.js +1 -1
  7. package/dist/ast/AbstractCollectionType.d.ts +1 -1
  8. package/dist/ast/AbstractCompoundType.d.ts +1 -1
  9. package/dist/ast/AbstractCompoundType.js +15 -15
  10. package/dist/ast/AbstractContainerType.d.ts +1 -1
  11. package/dist/ast/AbstractContainerType.js +15 -15
  12. package/dist/ast/AbstractLazyObjectType.d.ts +1 -1
  13. package/dist/ast/AbstractTermType.d.ts +1 -1
  14. package/dist/ast/BlankNodeType.d.ts +1 -1
  15. package/dist/ast/BlankNodeType.js +1 -1
  16. package/dist/ast/DefaultValueType.d.ts +1 -1
  17. package/dist/ast/DefaultValueType.js +2 -2
  18. package/dist/ast/IdentifierType.d.ts +1 -1
  19. package/dist/ast/IdentifierType.js +1 -1
  20. package/dist/ast/IntersectionType.d.ts +1 -1
  21. package/dist/ast/IntersectionType.js +3 -3
  22. package/dist/ast/IriType.d.ts +1 -1
  23. package/dist/ast/IriType.js +1 -1
  24. package/dist/ast/LazyObjectOptionType.d.ts +1 -1
  25. package/dist/ast/LazyObjectOptionType.js +1 -1
  26. package/dist/ast/LazyObjectSetType.d.ts +1 -1
  27. package/dist/ast/LazyObjectSetType.js +1 -1
  28. package/dist/ast/LazyObjectType.d.ts +1 -1
  29. package/dist/ast/LazyObjectType.js +1 -1
  30. package/dist/ast/ListType.d.ts +1 -1
  31. package/dist/ast/ListType.js +16 -16
  32. package/dist/ast/LiteralType.d.ts +1 -1
  33. package/dist/ast/LiteralType.js +1 -1
  34. package/dist/ast/ObjectCompoundType.js +3 -3
  35. package/dist/ast/ObjectType.d.ts +1 -1
  36. package/dist/ast/ObjectType.js +16 -16
  37. package/dist/ast/OptionType.d.ts +1 -1
  38. package/dist/ast/OptionType.js +1 -1
  39. package/dist/ast/SetType.d.ts +1 -1
  40. package/dist/ast/SetType.js +1 -1
  41. package/dist/ast/TermType.d.ts +1 -1
  42. package/dist/ast/TermType.js +1 -1
  43. package/dist/ast/Type.js +15 -15
  44. package/dist/ast/UnionType.d.ts +1 -1
  45. package/dist/ast/UnionType.js +3 -3
  46. package/dist/generators/transformAstToLabeledPropertyGraph.js +10 -10
  47. package/dist/generators/ts/AbstractCollectionType.d.ts +1 -5
  48. package/dist/generators/ts/AbstractCollectionType.js +6 -5
  49. package/dist/generators/ts/AbstractContainerType.d.ts +3 -6
  50. package/dist/generators/ts/AbstractContainerType.js +34 -34
  51. package/dist/generators/ts/AbstractDateType.d.ts +1 -1
  52. package/dist/generators/ts/AbstractIdentifierType.d.ts +1 -1
  53. package/dist/generators/ts/AbstractLazyObjectType.d.ts +7 -10
  54. package/dist/generators/ts/AbstractLazyObjectType.js +20 -32
  55. package/dist/generators/ts/AbstractLiteralType.d.ts +1 -5
  56. package/dist/generators/ts/AbstractLiteralType.js +7 -6
  57. package/dist/generators/ts/AbstractNumericType.d.ts +1 -1
  58. package/dist/generators/ts/AbstractPrimitiveType.d.ts +2 -6
  59. package/dist/generators/ts/AbstractPrimitiveType.js +7 -8
  60. package/dist/generators/ts/AbstractTermType.d.ts +1 -5
  61. package/dist/generators/ts/AbstractTermType.js +1 -15
  62. package/dist/generators/ts/AbstractType.d.ts +7 -5
  63. package/dist/generators/ts/AbstractType.js +12 -7
  64. package/dist/generators/ts/AbstractUnionType.d.ts +7 -10
  65. package/dist/generators/ts/AbstractUnionType.js +70 -81
  66. package/dist/generators/ts/AnonymousUnionType.d.ts +1 -1
  67. package/dist/generators/ts/AnonymousUnionType.js +1 -1
  68. package/dist/generators/ts/BigDecimalType.d.ts +1 -1
  69. package/dist/generators/ts/BigDecimalType.js +1 -1
  70. package/dist/generators/ts/BigIntType.d.ts +1 -1
  71. package/dist/generators/ts/BigIntType.js +1 -1
  72. package/dist/generators/ts/BlankNodeType.d.ts +1 -1
  73. package/dist/generators/ts/BlankNodeType.js +1 -1
  74. package/dist/generators/ts/BooleanType.d.ts +1 -1
  75. package/dist/generators/ts/BooleanType.js +2 -2
  76. package/dist/generators/ts/DateTimeType.d.ts +1 -1
  77. package/dist/generators/ts/DateTimeType.js +1 -1
  78. package/dist/generators/ts/DateType.d.ts +1 -1
  79. package/dist/generators/ts/DateType.js +1 -1
  80. package/dist/generators/ts/DefaultValueType.d.ts +2 -6
  81. package/dist/generators/ts/DefaultValueType.js +12 -15
  82. package/dist/generators/ts/FloatType.d.ts +1 -1
  83. package/dist/generators/ts/FloatType.js +1 -1
  84. package/dist/generators/ts/IdentifierType.d.ts +1 -1
  85. package/dist/generators/ts/IdentifierType.js +1 -1
  86. package/dist/generators/ts/IntType.d.ts +1 -1
  87. package/dist/generators/ts/IntType.js +1 -1
  88. package/dist/generators/ts/IriType.d.ts +3 -1
  89. package/dist/generators/ts/IriType.js +22 -17
  90. package/dist/generators/ts/LazyObjectOptionType.d.ts +1 -1
  91. package/dist/generators/ts/LazyObjectOptionType.js +1 -1
  92. package/dist/generators/ts/LazyObjectSetType.d.ts +1 -1
  93. package/dist/generators/ts/LazyObjectSetType.js +1 -1
  94. package/dist/generators/ts/LazyObjectType.d.ts +1 -1
  95. package/dist/generators/ts/LazyObjectType.js +1 -1
  96. package/dist/generators/ts/ListType.d.ts +1 -1
  97. package/dist/generators/ts/ListType.js +24 -24
  98. package/dist/generators/ts/LiteralType.d.ts +2 -1
  99. package/dist/generators/ts/LiteralType.js +9 -2
  100. package/dist/generators/ts/NamedObjectType.d.ts +1 -0
  101. package/dist/generators/ts/NamedObjectType.js +2 -1
  102. package/dist/generators/ts/NamedObjectUnionType.d.ts +1 -1
  103. package/dist/generators/ts/NamedObjectUnionType.js +6 -8
  104. package/dist/generators/ts/NamedUnionType.d.ts +1 -1
  105. package/dist/generators/ts/NamedUnionType.js +1 -1
  106. package/dist/generators/ts/OptionType.d.ts +1 -5
  107. package/dist/generators/ts/OptionType.js +2 -8
  108. package/dist/generators/ts/RdfjsDatasetObjectSetType.js +1 -1
  109. package/dist/generators/ts/SetType.d.ts +1 -1
  110. package/dist/generators/ts/SetType.js +1 -1
  111. package/dist/generators/ts/Snippets.d.ts +1 -0
  112. package/dist/generators/ts/Snippets.js +7 -0
  113. package/dist/generators/ts/StringType.d.ts +1 -1
  114. package/dist/generators/ts/StringType.js +2 -2
  115. package/dist/generators/ts/TermType.d.ts +1 -1
  116. package/dist/generators/ts/TermType.js +1 -1
  117. package/dist/generators/ts/TypeFactory.js +18 -18
  118. package/dist/generators/ts/ZodGenerator.js +1 -1
  119. package/dist/generators/ts/_NamedObjectType/AbstractProperty.d.ts +7 -7
  120. package/dist/generators/ts/_NamedObjectType/AbstractProperty.js +8 -11
  121. package/dist/generators/ts/_NamedObjectType/DiscriminantProperty.d.ts +2 -1
  122. package/dist/generators/ts/_NamedObjectType/DiscriminantProperty.js +16 -7
  123. package/dist/generators/ts/_NamedObjectType/IdentifierProperty.d.ts +2 -1
  124. package/dist/generators/ts/_NamedObjectType/IdentifierProperty.js +6 -3
  125. package/dist/generators/ts/_NamedObjectType/NamedObjectType_equalsFunctionDeclaration.js +1 -1
  126. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromRdfResourceFunctionDeclaration.js +3 -27
  127. package/dist/generators/ts/_NamedObjectType/NamedObjectType_hashFunctionDeclarations.js +2 -2
  128. package/dist/generators/ts/_NamedObjectType/NamedObjectType_interfaceDeclaration.js +1 -1
  129. package/dist/generators/ts/_NamedObjectType/NamedObjectType_schemaVariableStatement.js +1 -1
  130. package/dist/generators/ts/_NamedObjectType/ShaclProperty.d.ts +2 -6
  131. package/dist/generators/ts/_NamedObjectType/ShaclProperty.js +19 -23
  132. package/dist/generators/ts/_snippets/snippets_BooleanSchema.js +2 -2
  133. package/dist/generators/ts/_snippets/snippets_CollectionSchema.js +1 -1
  134. package/dist/generators/ts/_snippets/snippets_DefaultValueSchema.js +1 -1
  135. package/dist/generators/ts/_snippets/snippets_IriSchema.js +2 -2
  136. package/dist/generators/ts/_snippets/snippets_MaybeSchema.js +2 -2
  137. package/dist/generators/ts/_snippets/snippets_ShaclPropertySchema.js +1 -1
  138. package/dist/generators/ts/_snippets/snippets_StringSchema.js +2 -2
  139. package/dist/generators/ts/_snippets/snippets_booleanSparqlWherePatterns.js +1 -1
  140. package/dist/generators/ts/_snippets/snippets_convertToIri.js +1 -1
  141. package/dist/generators/ts/_snippets/snippets_defaultValueSparqlWherePatterns.js +1 -1
  142. package/dist/generators/ts/_snippets/snippets_ensureRdfResourceType.d.ts +3 -0
  143. package/dist/generators/ts/_snippets/snippets_ensureRdfResourceType.js +16 -0
  144. package/dist/generators/ts/_snippets/snippets_iriSparqlWherePatterns.js +1 -1
  145. package/dist/generators/ts/_snippets/snippets_listSparqlConstructTriples.js +2 -2
  146. package/dist/generators/ts/_snippets/snippets_listSparqlWherePatterns.js +2 -2
  147. package/dist/generators/ts/_snippets/snippets_maybeSparqlConstructTriples.js +1 -1
  148. package/dist/generators/ts/_snippets/snippets_maybeSparqlWherePatterns.js +3 -3
  149. package/dist/generators/ts/_snippets/snippets_setSparqlConstructTriples.js +1 -1
  150. package/dist/generators/ts/_snippets/snippets_setSparqlWherePatterns.js +1 -1
  151. package/dist/generators/ts/_snippets/snippets_shaclPropertySparqlConstructTriples.js +1 -1
  152. package/dist/generators/ts/_snippets/snippets_shaclPropertySparqlWherePatterns.js +1 -1
  153. package/dist/generators/ts/_snippets/snippets_stringSparqlWherePatterns.js +1 -1
  154. package/dist/generators/ts/_snippets/snippets_validateArray.js +1 -1
  155. package/dist/generators/ts/_snippets/snippets_validateMaybe.js +1 -1
  156. package/dist/generators/ts/tsComment.js +1 -1
  157. package/dist/input/generated.d.ts +1397 -1466
  158. package/dist/input/generated.js +516 -653
  159. package/package.json +2 -2
  160. package/dist/generators/ts/removeUndefined.d.ts +0 -2
  161. package/dist/generators/ts/removeUndefined.js +0 -17
@@ -3,7 +3,7 @@ import type { Maybe } from "purify-ts";
3
3
  import { AbstractTermType } from "./AbstractTermType.js";
4
4
  export declare class LiteralType extends AbstractTermType<Literal, Literal> {
5
5
  readonly datatype: Maybe<NamedNode>;
6
- readonly kind = "LiteralType";
6
+ readonly kind = "Literal";
7
7
  readonly nodeKinds: ReadonlySet<"Literal">;
8
8
  readonly languageIn: readonly string[];
9
9
  readonly maxExclusive: Maybe<Literal>;
@@ -2,7 +2,7 @@ import { AbstractTermType } from "./AbstractTermType.js";
2
2
  import { arrayEquals, maybeEquals, strictEquals, termEquals, } from "./equals.js";
3
3
  export class LiteralType extends AbstractTermType {
4
4
  datatype;
5
- kind = "LiteralType";
5
+ kind = "Literal";
6
6
  nodeKinds = nodeKinds;
7
7
  languageIn;
8
8
  maxExclusive;
@@ -54,11 +54,11 @@ export var ObjectCompoundType;
54
54
  const memberObjectTypes_ = [];
55
55
  for (const member of objectCompoundType.members) {
56
56
  switch (member.type.kind) {
57
- case "ObjectType":
57
+ case "Object":
58
58
  memberObjectTypes_.push(member.type);
59
59
  break;
60
- case "IntersectionType":
61
- case "UnionType": {
60
+ case "Intersection":
61
+ case "Union": {
62
62
  invariant(member.type.kind === objectCompoundType.kind);
63
63
  memberObjectTypes_.push(...memberObjectTypes(member.type));
64
64
  break;
@@ -29,7 +29,7 @@ export declare class ObjectType extends AbstractType {
29
29
  /**
30
30
  * Type discriminant.
31
31
  */
32
- readonly kind = "ObjectType";
32
+ readonly kind = "Object";
33
33
  readonly nodeKinds: ReadonlySet<NodeKind>;
34
34
  /**
35
35
  * Was this type synthesized or did it come from SHACL?
@@ -63,7 +63,7 @@ export class ObjectType extends AbstractType {
63
63
  /**
64
64
  * Type discriminant.
65
65
  */
66
- kind = "ObjectType";
66
+ kind = "Object";
67
67
  nodeKinds = nodeKinds;
68
68
  /**
69
69
  * Was this type synthesized or did it come from SHACL?
@@ -271,15 +271,15 @@ const nodeKinds = new Set(["BlankNode", "IRI"]);
271
271
  invariant(propertyType.length > 0);
272
272
  const currentPropertyType = propertyType.at(-1);
273
273
  switch (currentPropertyType.kind) {
274
- case "BlankNodeType":
275
- case "IdentifierType":
276
- case "IriType":
277
- case "LiteralType":
278
- case "TermType":
274
+ case "BlankNode":
275
+ case "Identifier":
276
+ case "Iri":
277
+ case "Literal":
278
+ case "Term":
279
279
  return false;
280
- case "LazyObjectOptionType":
281
- case "LazyObjectSetType":
282
- case "LazyObjectType": {
280
+ case "LazyObjectOption":
281
+ case "LazyObjectSet":
282
+ case "LazyObject": {
283
283
  if (helper(stack.concat({
284
284
  objectType,
285
285
  property,
@@ -296,7 +296,7 @@ const nodeKinds = new Set(["BlankNode", "IRI"]);
296
296
  }
297
297
  return false;
298
298
  }
299
- case "ObjectType": {
299
+ case "Object": {
300
300
  if (DEBUG) {
301
301
  process.stderr.write(`recurse into ${currentPropertyType}`);
302
302
  }
@@ -310,8 +310,8 @@ const nodeKinds = new Set(["BlankNode", "IRI"]);
310
310
  }
311
311
  return false;
312
312
  }
313
- case "IntersectionType":
314
- case "UnionType": {
313
+ case "Intersection":
314
+ case "Union": {
315
315
  if (DEBUG) {
316
316
  process.stderr.write(`recurse into ${currentPropertyType}`);
317
317
  }
@@ -326,10 +326,10 @@ const nodeKinds = new Set(["BlankNode", "IRI"]);
326
326
  }
327
327
  return false;
328
328
  }
329
- case "DefaultValueType":
330
- case "ListType":
331
- case "OptionType":
332
- case "SetType":
329
+ case "DefaultValue":
330
+ case "List":
331
+ case "Option":
332
+ case "Set":
333
333
  return helper(stack.concat({
334
334
  objectType,
335
335
  property,
@@ -3,7 +3,7 @@ import { AbstractContainerType } from "./AbstractContainerType.js";
3
3
  * A type with zero or one values of an item type.
4
4
  */
5
5
  export declare class OptionType<ItemTypeT extends OptionType.ItemType = OptionType.ItemType> extends AbstractContainerType<ItemTypeT> {
6
- readonly kind = "OptionType";
6
+ readonly kind = "Option";
7
7
  constructor({ itemType, }: Pick<ConstructorParameters<typeof AbstractContainerType<ItemTypeT>>[0], "itemType">);
8
8
  }
9
9
  export declare namespace OptionType {
@@ -3,7 +3,7 @@ import { AbstractContainerType } from "./AbstractContainerType.js";
3
3
  * A type with zero or one values of an item type.
4
4
  */
5
5
  export class OptionType extends AbstractContainerType {
6
- kind = "OptionType";
6
+ kind = "Option";
7
7
  constructor({ itemType, }) {
8
8
  super({
9
9
  comment: itemType.comment,
@@ -3,7 +3,7 @@ import { AbstractCollectionType } from "./AbstractCollectionType.js";
3
3
  * An unordered set of items of a specific type.
4
4
  */
5
5
  export declare class SetType<ItemTypeT extends SetType.ItemType = SetType.ItemType> extends AbstractCollectionType<ItemTypeT> {
6
- readonly kind = "SetType";
6
+ readonly kind = "Set";
7
7
  /**
8
8
  * Minimum number of items in the set.
9
9
  */
@@ -3,7 +3,7 @@ import { AbstractCollectionType } from "./AbstractCollectionType.js";
3
3
  * An unordered set of items of a specific type.
4
4
  */
5
5
  export class SetType extends AbstractCollectionType {
6
- kind = "SetType";
6
+ kind = "Set";
7
7
  /**
8
8
  * Minimum number of items in the set.
9
9
  */
@@ -5,7 +5,7 @@ import { AbstractTermType } from "./AbstractTermType.js";
5
5
  * Term type that is neither an IdentifierType nor a LiteralType. For example, a term type with nodeKinds = Literal | NamedNode.
6
6
  */
7
7
  export declare class TermType extends AbstractTermType<Literal | NamedNode, BlankNode | Literal | NamedNode> {
8
- readonly kind = "TermType";
8
+ readonly kind = "Term";
9
9
  readonly nodeKinds: ReadonlySet<NodeKind>;
10
10
  constructor({ nodeKinds, ...superParameters }: ConstructorParameters<typeof AbstractTermType<Literal | NamedNode, BlankNode | Literal | NamedNode>>[0] & {
11
11
  nodeKinds: ReadonlySet<NodeKind>;
@@ -4,7 +4,7 @@ import { AbstractTermType } from "./AbstractTermType.js";
4
4
  * Term type that is neither an IdentifierType nor a LiteralType. For example, a term type with nodeKinds = Literal | NamedNode.
5
5
  */
6
6
  export class TermType extends AbstractTermType {
7
- kind = "TermType";
7
+ kind = "Term";
8
8
  nodeKinds;
9
9
  constructor({ nodeKinds, ...superParameters }) {
10
10
  super(superParameters);
package/dist/ast/Type.js CHANGED
@@ -5,35 +5,35 @@ export var Type;
5
5
  return false;
6
6
  }
7
7
  switch (left.kind) {
8
- case "BlankNodeType":
8
+ case "BlankNode":
9
9
  return left.equals(right);
10
- case "DefaultValueType":
10
+ case "DefaultValue":
11
11
  return left.equals(right);
12
- case "IdentifierType":
12
+ case "Identifier":
13
13
  return left.equals(right);
14
- case "IntersectionType":
14
+ case "Intersection":
15
15
  return left.equals(right);
16
- case "IriType":
16
+ case "Iri":
17
17
  return left.equals(right);
18
- case "LiteralType":
18
+ case "Literal":
19
19
  return left.equals(right);
20
- case "LazyObjectOptionType":
20
+ case "LazyObjectOption":
21
21
  return left.equals(right);
22
- case "LazyObjectSetType":
22
+ case "LazyObjectSet":
23
23
  return left.equals(right);
24
- case "LazyObjectType":
24
+ case "LazyObject":
25
25
  return left.equals(right);
26
- case "ListType":
26
+ case "List":
27
27
  return left.equals(right);
28
- case "ObjectType":
28
+ case "Object":
29
29
  return left.equals(right);
30
- case "OptionType":
30
+ case "Option":
31
31
  return left.equals(right);
32
- case "TermType":
32
+ case "Term":
33
33
  return left.equals(right);
34
- case "UnionType":
34
+ case "Union":
35
35
  return left.equals(right);
36
- case "SetType":
36
+ case "Set":
37
37
  return left.equals(right);
38
38
  }
39
39
  }
@@ -5,7 +5,7 @@ import type { ObjectUnionType } from "./ObjectUnionType.js";
5
5
  * A disjunction/union of types, corresponding to an sh:xone.
6
6
  */
7
7
  export declare class UnionType<MemberTypeT extends UnionType.MemberType = UnionType.MemberType> extends AbstractCompoundType<UnionType.Member<MemberTypeT>, MemberTypeT> {
8
- readonly kind = "UnionType";
8
+ readonly kind = "Union";
9
9
  isObjectUnionType(): this is ObjectUnionType;
10
10
  toJSON(): {
11
11
  members: {
@@ -3,11 +3,11 @@ import { AbstractCompoundType } from "./AbstractCompoundType.js";
3
3
  * A disjunction/union of types, corresponding to an sh:xone.
4
4
  */
5
5
  export class UnionType extends AbstractCompoundType {
6
- kind = "UnionType";
6
+ kind = "Union";
7
7
  isObjectUnionType() {
8
8
  return (this.members.length > 0 &&
9
- this.members.every((member) => member.type.kind === "ObjectType" ||
10
- (member.type.kind === "UnionType" && member.type.isObjectUnionType())));
9
+ this.members.every((member) => member.type.kind === "Object" ||
10
+ (member.type.kind === "Union" && member.type.isObjectUnionType())));
11
11
  }
12
12
  toJSON() {
13
13
  return {
@@ -10,17 +10,17 @@ export function transformAstToLabeledPropertyGraph(ast) {
10
10
  for (const namedObjectTypeProperty of namedObjectType.properties) {
11
11
  let itemType;
12
12
  switch (namedObjectTypeProperty.type.kind) {
13
- case "DefaultValueType":
14
- case "ListType":
15
- case "OptionType":
16
- case "SetType":
13
+ case "DefaultValue":
14
+ case "List":
15
+ case "Option":
16
+ case "Set":
17
17
  itemType = namedObjectTypeProperty.type.itemType;
18
18
  break;
19
- case "LazyObjectType":
19
+ case "LazyObject":
20
20
  itemType = namedObjectTypeProperty.type.resolveType;
21
21
  break;
22
- case "LazyObjectOptionType":
23
- case "LazyObjectSetType":
22
+ case "LazyObjectOption":
23
+ case "LazyObjectSet":
24
24
  itemType = namedObjectTypeProperty.type.resolveType.itemType;
25
25
  break;
26
26
  default:
@@ -28,9 +28,9 @@ export function transformAstToLabeledPropertyGraph(ast) {
28
28
  break;
29
29
  }
30
30
  switch (itemType.kind) {
31
- case "IntersectionType":
32
- case "ObjectType":
33
- case "UnionType":
31
+ case "Intersection":
32
+ case "Object":
33
+ case "Union":
34
34
  if (itemType.name.isJust()) {
35
35
  relationships.push({
36
36
  id: namedObjectTypeProperty.shapeIdentifier.toString(),
@@ -25,11 +25,7 @@ export declare abstract class AbstractCollectionType<ItemTypeT extends AbstractC
25
25
  get name(): Code;
26
26
  get schemaType(): Code;
27
27
  get validationFunction(): Maybe<Code>;
28
- protected get schemaObject(): {
29
- minCount: number | undefined;
30
- item: Code;
31
- kind: Code;
32
- };
28
+ protected get schemaInitializers(): readonly Code[];
33
29
  fromJsonExpression({ variables, }: Parameters<AbstractContainerType<ItemTypeT>["fromJsonExpression"]>[0]): Code;
34
30
  graphqlResolveExpression({ variables, }: Parameters<AbstractContainerType<ItemTypeT>["graphqlResolveExpression"]>[0]): Code;
35
31
  jsonSchema(parameters: Parameters<AbstractContainerType<ItemTypeT>["jsonSchema"]>[0]): Code;
@@ -73,11 +73,12 @@ export class AbstractCollectionType extends AbstractContainerType {
73
73
  get validationFunction() {
74
74
  return Maybe.of(code `${this.reusables.snippets.validateArray}(${this.itemType.validationFunction.orDefault(this.itemValidationFunctionDefault)}, ${literalOf(!this._mutable)})`);
75
75
  }
76
- get schemaObject() {
77
- return {
78
- ...super.schemaObject,
79
- minCount: this.minCount > 0n ? Number(this.minCount) : undefined,
80
- };
76
+ get schemaInitializers() {
77
+ let schemaInitializers = super.schemaInitializers;
78
+ if (this.minCount > 0n) {
79
+ schemaInitializers = schemaInitializers.concat(code `minCount: ${Number(this.minCount)}`);
80
+ }
81
+ return schemaInitializers;
81
82
  }
82
83
  fromJsonExpression({ variables, }) {
83
84
  let expression = variables.value;
@@ -25,7 +25,7 @@ import { type Code } from "./ts-poet-wrapper.js";
25
25
  */
26
26
  export declare abstract class AbstractContainerType<ItemTypeT extends AbstractContainerType.ItemType> extends AbstractType {
27
27
  readonly declaration: Maybe<Code>;
28
- abstract readonly kind: "DefaultValueType" | "ListType" | "OptionType" | "SetType";
28
+ abstract readonly kind: "DefaultValue" | "List" | "Option" | "Set";
29
29
  /**
30
30
  * Container item type.
31
31
  *
@@ -36,14 +36,11 @@ export declare abstract class AbstractContainerType<ItemTypeT extends AbstractCo
36
36
  itemType: ItemTypeT;
37
37
  } & ConstructorParameters<typeof AbstractType>[0]);
38
38
  get recursive(): boolean;
39
- get schema(): Code;
39
+ get referencesObjectType(): boolean;
40
40
  get toRdfResourceValueTypes(): AbstractType["toRdfResourceValueTypes"];
41
41
  protected get itemConversionFunctionDefault(): AbstractType.ConversionFunction;
42
42
  protected get itemValidationFunctionDefault(): Code;
43
- protected get schemaObject(): {
44
- item: Code;
45
- kind: Code;
46
- };
43
+ protected get schemaInitializers(): readonly Code[];
47
44
  }
48
45
  export declare namespace AbstractContainerType {
49
46
  type ConversionFunction = AbstractType.ConversionFunction;
@@ -7,7 +7,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Maybe } from "purify-ts";
8
8
  import { Memoize } from "typescript-memoize";
9
9
  import { AbstractType } from "./AbstractType.js";
10
- import { removeUndefined } from "./removeUndefined.js";
11
10
  import { code } from "./ts-poet-wrapper.js";
12
11
  /**
13
12
  * Abstract base class for types that contain other types e.g., ListType, OptionType, SetType.
@@ -27,8 +26,8 @@ export class AbstractContainerType extends AbstractType {
27
26
  get recursive() {
28
27
  return this.itemType.recursive;
29
28
  }
30
- get schema() {
31
- return code `${removeUndefined(this.schemaObject)}`;
29
+ get referencesObjectType() {
30
+ return this.itemType.referencesObjectType;
32
31
  }
33
32
  get toRdfResourceValueTypes() {
34
33
  return this.itemType.toRdfResourceValueTypes;
@@ -47,16 +46,17 @@ export class AbstractContainerType extends AbstractType {
47
46
  get itemValidationFunctionDefault() {
48
47
  return code `${this.reusables.snippets.identityValidationFunction}`;
49
48
  }
50
- get schemaObject() {
51
- return {
52
- ...super.schemaObject,
53
- item: code `() => (${this.itemType.schema})`,
54
- };
49
+ get schemaInitializers() {
50
+ const initializers = super.schemaInitializers.concat();
51
+ if (this.recursive || this.itemType.referencesObjectType) {
52
+ initializers.push(code `get itemType() { return ${this.itemType.schema}; }`);
53
+ }
54
+ else {
55
+ initializers.push(code `itemType: ${this.itemType.schema}`);
56
+ }
57
+ return initializers;
55
58
  }
56
59
  }
57
- __decorate([
58
- Memoize()
59
- ], AbstractContainerType.prototype, "schema", null);
60
60
  __decorate([
61
61
  Memoize()
62
62
  ], AbstractContainerType.prototype, "itemConversionFunctionDefault", null);
@@ -67,31 +67,31 @@ __decorate([
67
67
  AbstractContainerType.GraphqlType = AbstractType.GraphqlType;
68
68
  function isItemType(type) {
69
69
  switch (type.kind) {
70
- case "AnonymousUnionType":
71
- case "BigDecimalType":
72
- case "BigIntType":
73
- case "BlankNodeType":
74
- case "BooleanType":
75
- case "DateTimeType":
76
- case "DateType":
77
- case "FloatType":
78
- case "IdentifierType":
79
- case "IntType":
80
- case "IriType":
81
- case "ListType":
82
- case "LiteralType":
83
- case "NamedObjectUnionType":
84
- case "NamedUnionType":
70
+ case "AnonymousUnion":
71
+ case "BigDecimal":
72
+ case "BigInt":
73
+ case "BlankNode":
74
+ case "Boolean":
75
+ case "DateTime":
76
+ case "Date":
77
+ case "Float":
78
+ case "Identifier":
79
+ case "Int":
80
+ case "Iri":
81
+ case "List":
82
+ case "Literal":
83
+ case "NamedObjectUnion":
84
+ case "NamedUnion":
85
85
  case "NamedObjectType":
86
- case "StringType":
87
- case "TermType":
86
+ case "String":
87
+ case "Term":
88
88
  return true;
89
- case "DefaultValueType":
90
- case "LazyObjectOptionType":
91
- case "LazyObjectSetType":
92
- case "LazyObjectType":
93
- case "OptionType":
94
- case "SetType":
89
+ case "DefaultValue":
90
+ case "LazyObjectOption":
91
+ case "LazyObjectSet":
92
+ case "LazyObject":
93
+ case "Option":
94
+ case "Set":
95
95
  return false;
96
96
  }
97
97
  }
@@ -4,7 +4,7 @@ export declare abstract class AbstractDateType extends AbstractPrimitiveType<Dat
4
4
  readonly equalsFunction: Code;
5
5
  readonly filterFunction: Code;
6
6
  readonly filterType: Code;
7
- abstract readonly kind: "DateTimeType" | "DateType";
7
+ abstract readonly kind: "DateTime" | "Date";
8
8
  readonly mutable = false;
9
9
  readonly name = "Date";
10
10
  readonly schemaType: Code;
@@ -3,7 +3,7 @@ import type { IdentifierNodeKind } from "@shaclmate/shacl-ast";
3
3
  import { AbstractTermType } from "./AbstractTermType.js";
4
4
  import { type Code } from "./ts-poet-wrapper.js";
5
5
  export declare abstract class AbstractIdentifierType<IdentifierT extends BlankNode | NamedNode> extends AbstractTermType<NamedNode, IdentifierT> {
6
- abstract readonly kind: "BlankNodeType" | "IdentifierType" | "IriType";
6
+ abstract readonly kind: "BlankNode" | "Identifier" | "Iri";
7
7
  abstract readonly nodeKinds: ReadonlySet<IdentifierNodeKind>;
8
8
  abstract readonly parseFunction: Code;
9
9
  readonly stringifyFunction: Code;
@@ -16,6 +16,7 @@ export declare abstract class AbstractLazyObjectType<PartialTypeT extends Abstra
16
16
  readonly declaration: Maybe<Code>;
17
17
  readonly discriminantProperty: AbstractType["discriminantProperty"];
18
18
  readonly mutable = false;
19
+ readonly referencesObjectType = true;
19
20
  readonly typeofs: "object"[];
20
21
  readonly validationFunction: Maybe<Code>;
21
22
  constructor({ partialType, resolveType, ...superParameters }: {
@@ -23,27 +24,27 @@ export declare abstract class AbstractLazyObjectType<PartialTypeT extends Abstra
23
24
  resolveType: ResolveTypeT;
24
25
  } & ConstructorParameters<typeof AbstractType>[0]);
25
26
  get equalsFunction(): Code;
26
- get hashFunction(): Code;
27
27
  get filterFunction(): Code;
28
28
  get filterType(): Code;
29
29
  get graphqlType(): AbstractType.GraphqlType;
30
+ get hashFunction(): Code;
30
31
  get name(): Code;
31
32
  get recursive(): boolean;
32
- get schema(): Code;
33
+ protected get schemaInitializers(): readonly Code[];
33
34
  get schemaType(): Code;
34
35
  get toRdfResourceValueTypes(): AbstractType["toRdfResourceValueTypes"];
35
36
  get valueSparqlConstructTriplesFunction(): Code;
36
37
  get valueSparqlWherePatternsFunction(): Code;
37
- protected get schemaObject(): {
38
- partial: Code;
39
- kind: Code;
40
- };
41
38
  jsonSchema(parameters: Parameters<AbstractType["jsonSchema"]>[0]): Code;
42
39
  jsonType(parameters?: Parameters<AbstractType["jsonType"]>[0]): AbstractType.JsonType;
43
40
  jsonUiSchemaElement(parameters: Parameters<AbstractType["jsonUiSchemaElement"]>[0]): Maybe<Code>;
44
41
  toJsonExpression({ variables, }: Parameters<AbstractType["toJsonExpression"]>[0]): Code;
45
42
  toRdfResourceValuesExpression({ variables, }: Parameters<AbstractType["toRdfResourceValuesExpression"]>[0]): Code;
46
43
  toStringExpression({ variables, }: Parameters<AbstractType["toStringExpression"]>[0]): Code;
44
+ protected resolveToPartialFunction<ObjectTypeT extends AbstractLazyObjectType.ObjectTypeConstraint>({ partialType, resolveType, }: {
45
+ partialType: ObjectTypeT;
46
+ resolveType: ObjectTypeT;
47
+ }): Code;
47
48
  protected resolvedNamedObjectUnionTypeToPartialNamedObjectUnionTypeConversion({ resolvedNamedObjectUnionType, partialNamedObjectUnionType, variables, }: {
48
49
  resolvedNamedObjectUnionType: NamedObjectUnionType;
49
50
  partialNamedObjectUnionType: NamedObjectUnionType;
@@ -51,10 +52,6 @@ export declare abstract class AbstractLazyObjectType<PartialTypeT extends Abstra
51
52
  resolvedObjectUnion: Code;
52
53
  };
53
54
  }): Code;
54
- protected resolveToPartialFunction<ObjectTypeT extends AbstractLazyObjectType.ObjectTypeConstraint>({ partialType, resolveType, }: {
55
- partialType: ObjectTypeT;
56
- resolveType: ObjectTypeT;
57
- }): Code;
58
55
  }
59
56
  export declare namespace AbstractLazyObjectType {
60
57
  type ObjectTypeConstraint = NamedObjectType | NamedObjectUnionType;