@shaclmate/compiler 4.0.33 → 4.0.35

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 (213) hide show
  1. package/dist/Compiler.d.ts +0 -3
  2. package/dist/Compiler.js +0 -2
  3. package/dist/ShapesGraphToAstTransformer.d.ts +1 -4
  4. package/dist/ShapesGraphToAstTransformer.js +1 -5
  5. package/dist/_ShapesGraphToAstTransformer/transformPropertyShapeToAstObjectTypeProperty.js +1 -3
  6. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstCompoundType.js +4 -7
  7. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstListType.js +0 -1
  8. package/dist/_ShapesGraphToAstTransformer/transformShapeToAstObjectType.js +1 -3
  9. package/dist/ast/AbstractCompoundType.d.ts +6 -4
  10. package/dist/ast/AbstractCompoundType.js +4 -37
  11. package/dist/ast/ObjectType.d.ts +1 -7
  12. package/dist/ast/ObjectType.js +1 -6
  13. package/dist/generators/ts/AbstractCollectionType.d.ts +9 -8
  14. package/dist/generators/ts/AbstractCollectionType.js +38 -120
  15. package/dist/generators/ts/AbstractContainerType.d.ts +3 -1
  16. package/dist/generators/ts/AbstractContainerType.js +20 -0
  17. package/dist/generators/ts/AbstractDateType.d.ts +5 -10
  18. package/dist/generators/ts/AbstractDateType.js +5 -32
  19. package/dist/generators/ts/AbstractIdentifierType.d.ts +4 -1
  20. package/dist/generators/ts/AbstractIdentifierType.js +0 -17
  21. package/dist/generators/ts/AbstractLazyObjectType.d.ts +9 -5
  22. package/dist/generators/ts/AbstractLazyObjectType.js +22 -21
  23. package/dist/generators/ts/AbstractLiteralType.d.ts +12 -4
  24. package/dist/generators/ts/AbstractLiteralType.js +3 -3
  25. package/dist/generators/ts/AbstractNamedUnionType.d.ts +2 -5
  26. package/dist/generators/ts/AbstractNamedUnionType.js +27 -58
  27. package/dist/generators/ts/AbstractNumericType.d.ts +3 -9
  28. package/dist/generators/ts/AbstractNumericType.js +6 -13
  29. package/dist/generators/ts/AbstractPrimitiveType.d.ts +9 -4
  30. package/dist/generators/ts/AbstractPrimitiveType.js +11 -18
  31. package/dist/generators/ts/AbstractTermType.d.ts +10 -5
  32. package/dist/generators/ts/AbstractTermType.js +14 -53
  33. package/dist/generators/ts/AbstractType.d.ts +39 -24
  34. package/dist/generators/ts/AbstractType.js +4 -2
  35. package/dist/generators/ts/AbstractUnionType.d.ts +3 -2
  36. package/dist/generators/ts/AbstractUnionType.js +29 -39
  37. package/dist/generators/ts/AnonymousUnionType.d.ts +1 -1
  38. package/dist/generators/ts/AnonymousUnionType.js +3 -3
  39. package/dist/generators/ts/BigDecimalType.d.ts +7 -4
  40. package/dist/generators/ts/BigDecimalType.js +11 -45
  41. package/dist/generators/ts/BigIntType.d.ts +3 -4
  42. package/dist/generators/ts/BigIntType.js +6 -17
  43. package/dist/generators/ts/BlankNodeType.d.ts +8 -7
  44. package/dist/generators/ts/BlankNodeType.js +18 -5
  45. package/dist/generators/ts/BooleanType.d.ts +6 -9
  46. package/dist/generators/ts/BooleanType.js +9 -16
  47. package/dist/generators/ts/DateTimeType.d.ts +4 -1
  48. package/dist/generators/ts/DateTimeType.js +6 -13
  49. package/dist/generators/ts/DateType.d.ts +4 -1
  50. package/dist/generators/ts/DateType.js +7 -14
  51. package/dist/generators/ts/DefaultValueType.d.ts +6 -6
  52. package/dist/generators/ts/DefaultValueType.js +30 -63
  53. package/dist/generators/ts/FloatType.d.ts +3 -3
  54. package/dist/generators/ts/FloatType.js +5 -5
  55. package/dist/generators/ts/IdentifierType.d.ts +7 -6
  56. package/dist/generators/ts/IdentifierType.js +26 -5
  57. package/dist/generators/ts/IntType.d.ts +3 -3
  58. package/dist/generators/ts/IntType.js +5 -5
  59. package/dist/generators/ts/IriType.d.ts +9 -12
  60. package/dist/generators/ts/IriType.js +43 -32
  61. package/dist/generators/ts/LazyObjectOptionType.d.ts +2 -1
  62. package/dist/generators/ts/LazyObjectOptionType.js +23 -44
  63. package/dist/generators/ts/LazyObjectSetType.d.ts +2 -1
  64. package/dist/generators/ts/LazyObjectSetType.js +19 -29
  65. package/dist/generators/ts/LazyObjectType.d.ts +2 -1
  66. package/dist/generators/ts/LazyObjectType.js +18 -26
  67. package/dist/generators/ts/LiteralType.d.ts +6 -3
  68. package/dist/generators/ts/LiteralType.js +27 -13
  69. package/dist/generators/ts/NamedObjectType.d.ts +7 -9
  70. package/dist/generators/ts/NamedObjectType.js +24 -32
  71. package/dist/generators/ts/NamedObjectUnionType.d.ts +3 -1
  72. package/dist/generators/ts/NamedObjectUnionType.js +21 -14
  73. package/dist/generators/ts/OptionType.d.ts +6 -5
  74. package/dist/generators/ts/OptionType.js +31 -51
  75. package/dist/generators/ts/Reusables.d.ts +3 -1
  76. package/dist/generators/ts/Reusables.js +2 -1
  77. package/dist/generators/ts/SetType.d.ts +0 -1
  78. package/dist/generators/ts/SetType.js +4 -22
  79. package/dist/generators/ts/SnippetFactory.d.ts +2 -0
  80. package/dist/generators/ts/Snippets.d.ts +36 -8
  81. package/dist/generators/ts/Snippets.js +207 -30
  82. package/dist/generators/ts/StringType.d.ts +6 -10
  83. package/dist/generators/ts/StringType.js +8 -21
  84. package/dist/generators/ts/TermType.d.ts +2 -4
  85. package/dist/generators/ts/TermType.js +6 -10
  86. package/dist/generators/ts/TsGenerator.d.ts +14 -1
  87. package/dist/generators/ts/TsGenerator.js +41 -12
  88. package/dist/generators/ts/TypeFactory.d.ts +8 -4
  89. package/dist/generators/ts/TypeFactory.js +73 -49
  90. package/dist/generators/ts/ZodGenerator.js +6 -3
  91. package/dist/generators/ts/_NamedObjectType/AbstractProperty.d.ts +27 -20
  92. package/dist/generators/ts/_NamedObjectType/AbstractProperty.js +4 -2
  93. package/dist/generators/ts/_NamedObjectType/DiscriminantProperty.d.ts +7 -7
  94. package/dist/generators/ts/_NamedObjectType/DiscriminantProperty.js +9 -9
  95. package/dist/generators/ts/_NamedObjectType/IdentifierProperty.d.ts +6 -6
  96. package/dist/generators/ts/_NamedObjectType/IdentifierProperty.js +36 -39
  97. package/dist/generators/ts/_NamedObjectType/NamedObjectType_createFunctionDeclaration.js +34 -31
  98. package/dist/generators/ts/_NamedObjectType/NamedObjectType_equalsFunctionDeclaration.js +1 -1
  99. package/dist/generators/ts/_NamedObjectType/NamedObjectType_focusSparqlConstructTriplesFunctionDeclaration.js +1 -1
  100. package/dist/generators/ts/_NamedObjectType/NamedObjectType_focusSparqlWherePatternsFunctionDeclaration.js +1 -1
  101. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromJsonFunctionDeclaration.js +31 -19
  102. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromRdfResourceFunctionDeclaration.js +30 -36
  103. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromRdfResourceValuesFunctionDeclaration.js +1 -1
  104. package/dist/generators/ts/_NamedObjectType/NamedObjectType_fromRdfTypeVariableStatement.js +1 -1
  105. package/dist/generators/ts/_NamedObjectType/NamedObjectType_graphqlTypeVariableStatement.js +2 -3
  106. package/dist/generators/ts/_NamedObjectType/NamedObjectType_hashFunctionDeclarations.js +6 -8
  107. package/dist/generators/ts/_NamedObjectType/NamedObjectType_isTypeFunctionDeclaration.js +1 -2
  108. package/dist/generators/ts/_NamedObjectType/NamedObjectType_jsonParseFunctionDeclaration.js +1 -1
  109. package/dist/generators/ts/_NamedObjectType/NamedObjectType_jsonSchemaFunctionDeclaration.js +1 -1
  110. package/dist/generators/ts/_NamedObjectType/NamedObjectType_jsonTypeAliasDeclaration.js +1 -1
  111. package/dist/generators/ts/_NamedObjectType/NamedObjectType_jsonUiSchemaFunctionDeclaration.js +1 -1
  112. package/dist/generators/ts/_NamedObjectType/NamedObjectType_objectSetMethodNames.d.ts +2 -0
  113. package/dist/generators/ts/_NamedObjectType/NamedObjectType_objectSetMethodNames.js +1 -1
  114. package/dist/generators/ts/_NamedObjectType/NamedObjectType_sparqlConstructQueryFunctionDeclaration.d.ts +2 -2
  115. package/dist/generators/ts/_NamedObjectType/NamedObjectType_sparqlConstructQueryFunctionDeclaration.js +1 -1
  116. package/dist/generators/ts/_NamedObjectType/NamedObjectType_sparqlConstructQueryStringFunctionDeclaration.d.ts +2 -2
  117. package/dist/generators/ts/_NamedObjectType/NamedObjectType_sparqlConstructQueryStringFunctionDeclaration.js +1 -1
  118. package/dist/generators/ts/_NamedObjectType/NamedObjectType_toJsonFunctionDeclaration.js +2 -2
  119. package/dist/generators/ts/_NamedObjectType/NamedObjectType_toRdfResourceFunctionDeclaration.js +1 -1
  120. package/dist/generators/ts/_NamedObjectType/NamedObjectType_toStringFunctionDeclarations.js +14 -18
  121. package/dist/generators/ts/_NamedObjectType/NamedObjectType_valueSparqlConstructTriplesFunctionDeclaration.js +1 -1
  122. package/dist/generators/ts/_NamedObjectType/NamedObjectType_valueSparqlWherePatternsFunctionDeclaration.js +1 -1
  123. package/dist/generators/ts/_NamedObjectType/ShaclProperty.d.ts +7 -7
  124. package/dist/generators/ts/_NamedObjectType/ShaclProperty.js +41 -29
  125. package/dist/generators/ts/_snippets/snippets_ConversionFunction.d.ts +3 -0
  126. package/dist/generators/ts/_snippets/snippets_ConversionFunction.js +4 -0
  127. package/dist/generators/ts/_snippets/snippets_DefaultValueSchema.js +3 -3
  128. package/dist/generators/ts/_snippets/snippets_HashFunction.d.ts +3 -0
  129. package/dist/generators/ts/_snippets/snippets_HashFunction.js +4 -0
  130. package/dist/generators/ts/_snippets/snippets_PropertyPath.js +34 -24
  131. package/dist/generators/ts/_snippets/snippets_ValidationFunction.d.ts +3 -0
  132. package/dist/generators/ts/_snippets/snippets_ValidationFunction.js +4 -0
  133. package/dist/generators/ts/_snippets/snippets_convertToArray.d.ts +3 -0
  134. package/dist/generators/ts/_snippets/snippets_convertToArray.js +8 -0
  135. package/dist/generators/ts/_snippets/snippets_convertToBlankNode.d.ts +3 -0
  136. package/dist/generators/ts/_snippets/snippets_convertToBlankNode.js +11 -0
  137. package/dist/generators/ts/_snippets/snippets_convertToBlankNodeIdentifierProperty.d.ts +3 -0
  138. package/dist/generators/ts/_snippets/snippets_convertToBlankNodeIdentifierProperty.js +17 -0
  139. package/dist/generators/ts/_snippets/snippets_convertToIdentifier.d.ts +3 -0
  140. package/dist/generators/ts/_snippets/snippets_convertToIdentifier.js +13 -0
  141. package/dist/generators/ts/_snippets/snippets_convertToIdentifierProperty.d.ts +3 -0
  142. package/dist/generators/ts/_snippets/snippets_convertToIdentifierProperty.js +21 -0
  143. package/dist/generators/ts/_snippets/snippets_convertToIri.d.ts +3 -0
  144. package/dist/generators/ts/_snippets/snippets_convertToIri.js +11 -0
  145. package/dist/generators/ts/_snippets/snippets_convertToIriIdentifierProperty.d.ts +3 -0
  146. package/dist/generators/ts/_snippets/snippets_convertToIriIdentifierProperty.js +17 -0
  147. package/dist/generators/ts/_snippets/snippets_convertToLazyObject.d.ts +3 -0
  148. package/dist/generators/ts/_snippets/snippets_convertToLazyObject.js +15 -0
  149. package/dist/generators/ts/_snippets/snippets_convertToLazyObjectOption.d.ts +3 -0
  150. package/dist/generators/ts/_snippets/snippets_convertToLazyObjectOption.js +31 -0
  151. package/dist/generators/ts/_snippets/snippets_convertToLazyObjectSet.d.ts +3 -0
  152. package/dist/generators/ts/_snippets/snippets_convertToLazyObjectSet.js +25 -0
  153. package/dist/generators/ts/_snippets/snippets_convertToLiteral.d.ts +3 -0
  154. package/dist/generators/ts/_snippets/snippets_convertToLiteral.js +13 -0
  155. package/dist/generators/ts/_snippets/snippets_convertToMaybe.d.ts +3 -0
  156. package/dist/generators/ts/_snippets/snippets_convertToMaybe.js +19 -0
  157. package/dist/generators/ts/_snippets/snippets_convertWithDefaultValue.d.ts +3 -0
  158. package/dist/generators/ts/_snippets/snippets_convertWithDefaultValue.js +11 -0
  159. package/dist/generators/ts/_snippets/snippets_defaultValueSparqlWherePatterns.js +1 -1
  160. package/dist/generators/ts/_snippets/snippets_hashArray.d.ts +3 -0
  161. package/dist/generators/ts/_snippets/snippets_hashArray.js +11 -0
  162. package/dist/generators/ts/_snippets/snippets_hashBigDecimal.d.ts +3 -0
  163. package/dist/generators/ts/_snippets/snippets_hashBigDecimal.js +7 -0
  164. package/dist/generators/ts/_snippets/snippets_hashBoolean.d.ts +3 -0
  165. package/dist/generators/ts/_snippets/snippets_hashBoolean.js +7 -0
  166. package/dist/generators/ts/_snippets/snippets_hashDate.d.ts +3 -0
  167. package/dist/generators/ts/_snippets/snippets_hashDate.js +7 -0
  168. package/dist/generators/ts/_snippets/snippets_hashDateTime.d.ts +3 -0
  169. package/dist/generators/ts/_snippets/snippets_hashDateTime.js +7 -0
  170. package/dist/generators/ts/_snippets/snippets_hashMaybe.d.ts +3 -0
  171. package/dist/generators/ts/_snippets/snippets_hashMaybe.js +11 -0
  172. package/dist/generators/ts/_snippets/snippets_hashNumeric.d.ts +3 -0
  173. package/dist/generators/ts/_snippets/snippets_hashNumeric.js +7 -0
  174. package/dist/generators/ts/_snippets/snippets_hashString.d.ts +3 -0
  175. package/dist/generators/ts/_snippets/snippets_hashString.js +7 -0
  176. package/dist/generators/ts/_snippets/snippets_hashTerm.d.ts +3 -0
  177. package/dist/generators/ts/_snippets/snippets_hashTerm.js +12 -0
  178. package/dist/generators/ts/_snippets/snippets_identityConversionFunction.d.ts +3 -0
  179. package/dist/generators/ts/_snippets/snippets_identityConversionFunction.js +6 -0
  180. package/dist/generators/ts/_snippets/snippets_identityValidationFunction.d.ts +3 -0
  181. package/dist/generators/ts/_snippets/snippets_identityValidationFunction.js +6 -0
  182. package/dist/generators/ts/_snippets/snippets_toIsoDateString.d.ts +3 -0
  183. package/dist/generators/ts/_snippets/snippets_toIsoDateString.js +6 -0
  184. package/dist/generators/ts/_snippets/snippets_validateArray.d.ts +3 -0
  185. package/dist/generators/ts/_snippets/snippets_validateArray.js +13 -0
  186. package/dist/generators/ts/_snippets/snippets_validateMaybe.d.ts +3 -0
  187. package/dist/generators/ts/_snippets/snippets_validateMaybe.js +7 -0
  188. package/dist/generators/ts/graphqlSchemaVariableStatement.d.ts +1 -1
  189. package/dist/generators/ts/graphqlSchemaVariableStatement.js +7 -4
  190. package/dist/generators/ts/objectSetDeclarations.js +4 -34
  191. package/dist/generators/ts/objectSetInterfaceDeclaration.js +1 -1
  192. package/dist/generators/ts/objectSetMethodSignatures.js +2 -2
  193. package/dist/generators/ts/rdfjsDatasetObjectSetClassDeclaration.js +2 -2
  194. package/dist/generators/ts/sparqlObjectSetClassDeclaration.js +2 -2
  195. package/dist/input/ShapesGraph.d.ts +5 -8
  196. package/dist/input/ShapesGraph.js +5 -6
  197. package/dist/input/generated.d.ts +175 -230
  198. package/dist/input/generated.js +226 -1748
  199. package/package.json +2 -2
  200. package/dist/_ShapesGraphToAstTransformer/nodeShapeTsFeatures.d.ts +0 -6
  201. package/dist/_ShapesGraphToAstTransformer/nodeShapeTsFeatures.js +0 -67
  202. package/dist/generators/ts/_snippets/snippets_isReadonlyBigIntArray.d.ts +0 -3
  203. package/dist/generators/ts/_snippets/snippets_isReadonlyBigIntArray.js +0 -6
  204. package/dist/generators/ts/_snippets/snippets_isReadonlyBooleanArray.d.ts +0 -3
  205. package/dist/generators/ts/_snippets/snippets_isReadonlyBooleanArray.js +0 -6
  206. package/dist/generators/ts/_snippets/snippets_isReadonlyNumberArray.d.ts +0 -3
  207. package/dist/generators/ts/_snippets/snippets_isReadonlyNumberArray.js +0 -6
  208. package/dist/generators/ts/_snippets/snippets_isReadonlyObjectArray.d.ts +0 -3
  209. package/dist/generators/ts/_snippets/snippets_isReadonlyObjectArray.js +0 -6
  210. package/dist/generators/ts/_snippets/snippets_isReadonlyStringArray.d.ts +0 -3
  211. package/dist/generators/ts/_snippets/snippets_isReadonlyStringArray.js +0 -6
  212. package/dist/generators/ts/syntheticNamePrefix.d.ts +0 -2
  213. package/dist/generators/ts/syntheticNamePrefix.js +0 -2
@@ -1,19 +1,21 @@
1
- import { Maybe, NonEmptyList } from "purify-ts";
1
+ import { Maybe } from "purify-ts";
2
2
  import { AbstractContainerType } from "./AbstractContainerType.js";
3
3
  import { type Code } from "./ts-poet-wrapper.js";
4
4
  export declare class OptionType<ItemTypeT extends OptionType.ItemType> extends AbstractContainerType<ItemTypeT> {
5
5
  readonly discriminantProperty: Maybe<AbstractContainerType.DiscriminantProperty>;
6
6
  readonly graphqlArgs: AbstractContainerType<ItemTypeT>["graphqlArgs"];
7
7
  readonly kind = "OptionType";
8
- readonly typeofs: NonEmptyList<"object">;
9
- get conversions(): readonly AbstractContainerType.Conversion[];
8
+ readonly typeofs: "object"[];
9
+ get conversionFunction(): Maybe<AbstractContainerType.ConversionFunction>;
10
10
  get equalsFunction(): Code;
11
11
  get filterFunction(): Code;
12
12
  get filterType(): Code;
13
13
  get graphqlType(): AbstractContainerType.GraphqlType;
14
+ get hashFunction(): Code;
14
15
  get mutable(): boolean;
15
16
  get name(): Code;
16
17
  get schemaType(): Code;
18
+ get validationFunction(): Maybe<Code>;
17
19
  get valueSparqlConstructTriplesFunction(): Code;
18
20
  get valueSparqlWherePatternsFunction(): Code;
19
21
  protected get schemaObject(): {
@@ -23,10 +25,9 @@ export declare class OptionType<ItemTypeT extends OptionType.ItemType> extends A
23
25
  fromJsonExpression({ variables, }: Parameters<AbstractContainerType<ItemTypeT>["fromJsonExpression"]>[0]): Code;
24
26
  fromRdfResourceValuesExpression(parameters: Parameters<AbstractContainerType<ItemTypeT>["fromRdfResourceValuesExpression"]>[0]): Code;
25
27
  graphqlResolveExpression(parameters: Parameters<AbstractContainerType<ItemTypeT>["graphqlResolveExpression"]>[0]): Code;
26
- hashStatements({ depth, variables, }: Parameters<AbstractContainerType<ItemTypeT>["hashStatements"]>[0]): readonly Code[];
28
+ jsonSchema(parameters: Parameters<AbstractContainerType<ItemTypeT>["jsonSchema"]>[0]): Code;
27
29
  jsonType(parameters?: Parameters<AbstractContainerType<ItemTypeT>["jsonType"]>[0]): AbstractContainerType.JsonType;
28
30
  jsonUiSchemaElement(parameters: Parameters<AbstractContainerType<ItemTypeT>["jsonUiSchemaElement"]>[0]): Maybe<Code>;
29
- jsonSchema(parameters: Parameters<AbstractContainerType<ItemTypeT>["jsonSchema"]>[0]): Code;
30
31
  toJsonExpression({ variables, }: Parameters<AbstractContainerType<ItemTypeT>["toJsonExpression"]>[0]): Code;
31
32
  toRdfResourceValuesExpression({ variables, }: Parameters<AbstractContainerType<ItemTypeT>["toRdfResourceValuesExpression"]>[0]): Code;
32
33
  toStringExpression({ variables, }: Parameters<AbstractContainerType<ItemTypeT>["toStringExpression"]>[0]): Code;
@@ -4,45 +4,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { Maybe, NonEmptyList } from "purify-ts";
7
+ import { Maybe } from "purify-ts";
8
8
  import { invariant } from "ts-invariant";
9
9
  import { Memoize } from "typescript-memoize";
10
- import { AbstractCollectionType } from "./AbstractCollectionType.js";
11
10
  import { AbstractContainerType } from "./AbstractContainerType.js";
12
11
  import { codeEquals } from "./codeEquals.js";
13
- import { code, joinCode, literalOf } from "./ts-poet-wrapper.js";
12
+ import { code, literalOf } from "./ts-poet-wrapper.js";
14
13
  export class OptionType extends AbstractContainerType {
15
14
  discriminantProperty = Maybe.empty();
16
15
  graphqlArgs = Maybe.empty();
17
16
  kind = "OptionType";
18
- typeofs = NonEmptyList(["object"]);
19
- get conversions() {
20
- const conversions = [];
21
- conversions.push({
22
- conversionExpression: (value) => value,
23
- sourceTypeCheckExpression: (value) => code `${this.reusables.imports.Maybe}.isMaybe(${value})`,
24
- sourceTypeName: this.name,
25
- sourceTypeof: "object",
17
+ typeofs = ["object"];
18
+ get conversionFunction() {
19
+ const itemConversionFunction = this.itemType.conversionFunction.orDefault(this.itemConversionFunctionDefault);
20
+ return Maybe.of({
21
+ code: code `${this.reusables.snippets.convertToMaybe}(${itemConversionFunction.code})`,
22
+ sourceTypes: itemConversionFunction.sourceTypes.concat({
23
+ name: this.name,
24
+ typeof: "object",
25
+ }, {
26
+ name: code `undefined`,
27
+ typeof: "undefined",
28
+ }),
26
29
  });
27
- for (const itemTypeConversion of this.itemType.conversions) {
28
- conversions.push({
29
- ...itemTypeConversion,
30
- conversionExpression: (value) => code `${this.reusables.imports.Maybe}.of(${itemTypeConversion.conversionExpression(value)})`,
31
- });
32
- }
33
- // Unless itemType is a list, it should only have a conversion from undefined if it has a
34
- // defaultValue. Per the CST->AST transformation logic, a type with a defaultValue
35
- // should never be wrapped in an OptionType.
36
- invariant(!conversions.some((conversion) => conversion.sourceTypeof === "undefined") || this.itemType instanceof AbstractCollectionType);
37
- if (!conversions.some((conversion) => conversion.sourceTypeof === "undefined")) {
38
- conversions.push({
39
- conversionExpression: () => code `${this.reusables.imports.Maybe}.empty()`,
40
- sourceTypeCheckExpression: (value) => code `${value} === undefined`,
41
- sourceTypeName: code `undefined`,
42
- sourceTypeof: "undefined",
43
- });
44
- }
45
- return conversions;
46
30
  }
47
31
  get equalsFunction() {
48
32
  return code `((left, right) => ${this.reusables.snippets.maybeEquals}(left, right, ${this.itemType.equalsFunction}))`;
@@ -59,6 +43,9 @@ export class OptionType extends AbstractContainerType {
59
43
  nullable: true,
60
44
  });
61
45
  }
46
+ get hashFunction() {
47
+ return code `${this.reusables.snippets.hashMaybe}(${this.itemType.hashFunction})`;
48
+ }
62
49
  get mutable() {
63
50
  return this.itemType.mutable;
64
51
  }
@@ -68,6 +55,9 @@ export class OptionType extends AbstractContainerType {
68
55
  get schemaType() {
69
56
  return code `${this.reusables.snippets.MaybeSchema}<${this.itemType.schemaType}>`;
70
57
  }
58
+ get validationFunction() {
59
+ return Maybe.of(code `${this.reusables.snippets.validateMaybe}(${this.itemType.validationFunction.orDefault(this.itemValidationFunctionDefault)})`);
60
+ }
71
61
  get valueSparqlConstructTriplesFunction() {
72
62
  return code `${this.reusables.snippets.maybeSparqlConstructTriples}<${this.itemType.filterType}, ${this.itemType.schemaType}>(${this.itemType.valueSparqlConstructTriplesFunction})`;
73
63
  }
@@ -82,13 +72,10 @@ export class OptionType extends AbstractContainerType {
82
72
  }
83
73
  fromJsonExpression({ variables, }) {
84
74
  const expression = code `${this.reusables.imports.Maybe}.fromNullable(${variables.value})`;
85
- const valueVariable = code `item`;
86
75
  const itemFromJsonExpression = this.itemType.fromJsonExpression({
87
- variables: { value: valueVariable },
76
+ variables: { value: code `item` },
88
77
  });
89
- return codeEquals(itemFromJsonExpression, valueVariable)
90
- ? expression
91
- : code `${expression}.map(item => (${itemFromJsonExpression}))`;
78
+ return code `${expression}.map(item => (${itemFromJsonExpression}).map(${this.reusables.imports.Maybe}.of)).orDefault(${this.reusables.imports.Either}.of(${this.reusables.imports.Maybe}.empty()))`;
92
79
  }
93
80
  fromRdfResourceValuesExpression(parameters) {
94
81
  const { variables } = parameters;
@@ -97,18 +84,8 @@ export class OptionType extends AbstractContainerType {
97
84
  graphqlResolveExpression(parameters) {
98
85
  return code `${this.itemType.graphqlResolveExpression(parameters)}.extractNullable()`;
99
86
  }
100
- hashStatements({ depth, variables, }) {
101
- return [
102
- code `${variables.value}.ifJust((value${depth}) => { ${joinCode(this.itemType
103
- .hashStatements({
104
- depth: depth + 1,
105
- variables: {
106
- hasher: variables.hasher,
107
- value: code `value${depth}`,
108
- },
109
- })
110
- .concat())} });`,
111
- ];
87
+ jsonSchema(parameters) {
88
+ return code `${this.itemType.jsonSchema(parameters)}.optional()`;
112
89
  }
113
90
  jsonType(parameters) {
114
91
  const itemTypeJsonType = this.itemType.jsonType(parameters);
@@ -120,9 +97,6 @@ export class OptionType extends AbstractContainerType {
120
97
  jsonUiSchemaElement(parameters) {
121
98
  return this.itemType.jsonUiSchemaElement(parameters);
122
99
  }
123
- jsonSchema(parameters) {
124
- return code `${this.itemType.jsonSchema(parameters)}.optional()`;
125
- }
126
100
  toJsonExpression({ variables, }) {
127
101
  return code `${variables.value}.map(item => (${this.itemType.toJsonExpression({ variables: { value: code `item` } })})).extract()`;
128
102
  }
@@ -142,7 +116,7 @@ export class OptionType extends AbstractContainerType {
142
116
  }
143
117
  __decorate([
144
118
  Memoize()
145
- ], OptionType.prototype, "conversions", null);
119
+ ], OptionType.prototype, "conversionFunction", null);
146
120
  __decorate([
147
121
  Memoize()
148
122
  ], OptionType.prototype, "equalsFunction", null);
@@ -155,12 +129,18 @@ __decorate([
155
129
  __decorate([
156
130
  Memoize()
157
131
  ], OptionType.prototype, "graphqlType", null);
132
+ __decorate([
133
+ Memoize()
134
+ ], OptionType.prototype, "hashFunction", null);
158
135
  __decorate([
159
136
  Memoize()
160
137
  ], OptionType.prototype, "name", null);
161
138
  __decorate([
162
139
  Memoize()
163
140
  ], OptionType.prototype, "schemaType", null);
141
+ __decorate([
142
+ Memoize()
143
+ ], OptionType.prototype, "validationFunction", null);
164
144
  __decorate([
165
145
  Memoize()
166
146
  ], OptionType.prototype, "valueSparqlConstructTriplesFunction", null);
@@ -1,10 +1,12 @@
1
1
  import type { Logger } from "ts-log";
2
2
  import { Imports } from "./Imports.js";
3
3
  import { Snippets } from "./Snippets.js";
4
+ import type { TsGenerator } from "./TsGenerator.js";
4
5
  export declare class Reusables {
5
6
  readonly imports: Imports;
6
7
  readonly snippets: Snippets;
7
- constructor({ logger }: {
8
+ constructor({ configuration, logger, }: {
9
+ configuration: TsGenerator.Configuration;
8
10
  logger: Logger;
9
11
  });
10
12
  }
@@ -3,9 +3,10 @@ import { Snippets } from "./Snippets.js";
3
3
  export class Reusables {
4
4
  imports;
5
5
  snippets;
6
- constructor({ logger }) {
6
+ constructor({ configuration, logger, }) {
7
7
  this.imports = new Imports();
8
8
  this.snippets = new Snippets({
9
+ configuration,
9
10
  imports: this.imports,
10
11
  logger,
11
12
  });
@@ -3,7 +3,6 @@ import { type Code } from "./ts-poet-wrapper.js";
3
3
  export declare class SetType<ItemTypeT extends SetType.ItemType> extends AbstractCollectionType<ItemTypeT> {
4
4
  readonly graphqlArgs: AbstractCollectionType<ItemTypeT>["graphqlArgs"];
5
5
  readonly kind = "SetType";
6
- get conversions(): readonly AbstractCollectionType.Conversion[];
7
6
  get valueSparqlConstructTriplesFunction(): Code;
8
7
  get valueSparqlWherePatternsFunction(): Code;
9
8
  fromRdfResourceValuesExpression(parameters: Parameters<AbstractCollectionType<ItemTypeT>["fromRdfResourceValuesExpression"]>[0]): Code;
@@ -11,18 +11,6 @@ import { code, joinCode } from "./ts-poet-wrapper.js";
11
11
  export class SetType extends AbstractCollectionType {
12
12
  graphqlArgs = Maybe.empty();
13
13
  kind = "SetType";
14
- get conversions() {
15
- const conversions = [];
16
- if (this.minCount === 0n) {
17
- conversions.push({
18
- conversionExpression: () => code `[]`,
19
- sourceTypeCheckExpression: (value) => code `${value} === undefined`,
20
- sourceTypeName: code `undefined`,
21
- sourceTypeof: "undefined",
22
- });
23
- }
24
- return conversions.concat(super.conversions);
25
- }
26
14
  get valueSparqlConstructTriplesFunction() {
27
15
  return code `${this.reusables.snippets.setSparqlConstructTriples}<${this.itemType.filterType}, ${this.itemType.schemaType}>(${this.itemType.valueSparqlConstructTriplesFunction})`;
28
16
  }
@@ -31,17 +19,11 @@ export class SetType extends AbstractCollectionType {
31
19
  }
32
20
  fromRdfResourceValuesExpression(parameters) {
33
21
  const { variables } = parameters;
34
- const chain = [
22
+ return joinCode([
35
23
  this.itemType.fromRdfResourceValuesExpression(parameters),
36
- ];
37
- if (this.minCount === 0n || this._mutable) {
38
- chain.push(code `map(values => values.toArray()${this._mutable ? ".concat()" : ""})`);
39
- }
40
- else {
41
- chain.push(code `chain(values => ${this.reusables.imports.NonEmptyList}.fromArray(values.toArray()).toEither(new Error(\`\${${variables.resource}.identifier} is an empty set\`)))`);
42
- }
43
- chain.push(code `map(valuesArray => ${this.reusables.imports.Resource}.Values.fromValue({ focusResource: ${variables.resource}, propertyPath: ${variables.propertyPath}, value: valuesArray }))`);
44
- return joinCode(chain, { on: "." });
24
+ code `map(values => values.toArray()${this._mutable ? ".concat()" : ""})`,
25
+ code `map(valuesArray => ${this.reusables.imports.Resource}.Values.fromValue({ focusResource: ${variables.resource}, propertyPath: ${variables.propertyPath}, value: valuesArray }))`,
26
+ ], { on: "." });
45
27
  }
46
28
  jsonType() {
47
29
  const name = code `${!this.mutable ? "readonly " : ""}(${this.itemType.jsonType().name})[]`;
@@ -3,8 +3,10 @@ import type { Logger } from "ts-log";
3
3
  import type { Imports } from "./Imports.js";
4
4
  import type { Snippet } from "./Snippet.js";
5
5
  import type { Snippets } from "./Snippets.js";
6
+ import type { TsGenerator } from "./TsGenerator.js";
6
7
  import type { Code } from "./ts-poet-wrapper.js";
7
8
  export type SnippetFactory = (parameters: {
9
+ configuration: TsGenerator.Configuration;
8
10
  imports: Imports;
9
11
  logger: Logger;
10
12
  rdfjsTermExpression: (rdfjsTerm: Omit<BlankNode, "equals"> | Omit<Literal, "equals"> | Omit<NamedNode, "equals"> | Omit<Variable, "equals">) => Code;
@@ -1,11 +1,14 @@
1
1
  import type { Logger } from "ts-log";
2
2
  import type { Imports } from "./Imports.js";
3
3
  import type { Snippet } from "./Snippet.js";
4
+ import type { TsGenerator } from "./TsGenerator.js";
4
5
  import { type Code } from "./ts-poet-wrapper.js";
5
6
  export declare class Snippets {
6
- protected readonly imports: Imports;
7
- protected readonly logger: Logger;
8
- constructor({ imports, logger }: {
7
+ private readonly configuration;
8
+ private readonly imports;
9
+ private readonly logger;
10
+ constructor({ configuration, imports, logger, }: {
11
+ configuration: TsGenerator.Configuration;
9
12
  imports: Imports;
10
13
  logger: Logger;
11
14
  });
@@ -15,6 +18,7 @@ export declare class Snippets {
15
18
  get BooleanSchema(): Snippet;
16
19
  get CollectionFilter(): Snippet;
17
20
  get CollectionSchema(): Snippet;
21
+ get ConversionFunction(): Snippet;
18
22
  get DateFilter(): Snippet;
19
23
  get DateSchema(): Snippet;
20
24
  get DefaultValueSchema(): Snippet;
@@ -23,6 +27,7 @@ export declare class Snippets {
23
27
  get FocusSparqlWherePatternsFunction(): Snippet;
24
28
  get FromRdfResourceFunction(): Snippet;
25
29
  get FromRdfResourceValuesFunction(): Snippet;
30
+ get HashFunction(): Snippet;
26
31
  get Hasher(): Snippet;
27
32
  get IdentifierFilter(): Snippet;
28
33
  get IdentifierSchema(): Snippet;
@@ -51,6 +56,7 @@ export declare class Snippets {
51
56
  get ToRdfResourceFunction(): Snippet;
52
57
  get ToRdfResourceValuesFunction(): Snippet;
53
58
  get UnwrapR(): Snippet;
59
+ get ValidationFunction(): Snippet;
54
60
  get ValueSparqlConstructTriplesFunction(): Snippet;
55
61
  get ValueSparqlWherePatternsFunction(): Snippet;
56
62
  get _FromRdfResourceFunction(): Snippet;
@@ -63,6 +69,19 @@ export declare class Snippets {
63
69
  get booleanEquals(): Snippet;
64
70
  get booleanSparqlWherePatterns(): Snippet;
65
71
  get compactRecord(): Snippet;
72
+ get convertToArray(): Snippet;
73
+ get convertToBlankNode(): Snippet;
74
+ get convertToBlankNodeIdentifierProperty(): Snippet;
75
+ get convertToIdentifier(): Snippet;
76
+ get convertToIdentifierProperty(): Snippet;
77
+ get convertToIri(): Snippet;
78
+ get convertToIriIdentifierProperty(): Snippet;
79
+ get convertToLazyObject(): Snippet;
80
+ get convertToLazyObjectOption(): Snippet;
81
+ get convertToLazyObjectSet(): Snippet;
82
+ get convertToLiteral(): Snippet;
83
+ get convertToMaybe(): Snippet;
84
+ get convertWithDefaultValue(): Snippet;
66
85
  get dateEquals(): Snippet;
67
86
  get dateSparqlWherePatterns(): Snippet;
68
87
  get decodeBigDecimalLiteral(): Snippet;
@@ -82,14 +101,20 @@ export declare class Snippets {
82
101
  get filterTerm(): Snippet;
83
102
  get fromRdfLanguageIn(): Snippet;
84
103
  get fromRdfPreferredLanguages(): Snippet;
104
+ get hashArray(): Snippet;
105
+ get hashBigDecimal(): Snippet;
106
+ get hashBoolean(): Snippet;
107
+ get hashDate(): Snippet;
108
+ get hashDateTime(): Snippet;
109
+ get hashMaybe(): Snippet;
110
+ get hashNumeric(): Snippet;
111
+ get hashString(): Snippet;
112
+ get hashTerm(): Snippet;
85
113
  get identifierSparqlWherePatterns(): Snippet;
114
+ get identityConversionFunction(): Snippet;
115
+ get identityValidationFunction(): Snippet;
86
116
  get ifUsed(): Code[];
87
117
  get iriSparqlWherePatterns(): Snippet;
88
- get isReadonlyBigIntArray(): Snippet;
89
- get isReadonlyBooleanArray(): Snippet;
90
- get isReadonlyNumberArray(): Snippet;
91
- get isReadonlyObjectArray(): Snippet;
92
- get isReadonlyStringArray(): Snippet;
93
118
  get liftSparqlPatterns(): Snippet;
94
119
  get listSparqlConstructTriples(): Snippet;
95
120
  get listSparqlWherePatterns(): Snippet;
@@ -119,6 +144,9 @@ export declare class Snippets {
119
144
  get termFilterSparqlPatterns(): Snippet;
120
145
  get termSchemaSparqlPatterns(): Snippet;
121
146
  get termSparqlWherePatterns(): Snippet;
147
+ get toIsoDateString(): Snippet;
148
+ get validateArray(): Snippet;
149
+ get validateMaybe(): Snippet;
122
150
  get wrap_FromRdfResourceFunction(): Snippet;
123
151
  get wrap_ToRdfResourceFunction(): Snippet;
124
152
  protected get snippets(): Snippets;